文章目录
过去的半年都在做一个项目,我的分工是小程序前端,最近开始着手结项工作,想着把wxml和wxss里面一些我刚上手时不了解或者遇到的一些问题和用法浅写一下。各个组件的用法我就不展开说了,官方文档上的属性和例子都很好,可以去看一下,这里是微信官方小程序文档链接:微信开放文档
现在进入正题~~
min-height:给元素设置最小高度,当内容少的时候,元素是这个高度,当内容超出时,元素高度会自动适应内容,不会出现内容溢出情况。
一开始用了height: 100vh,在调试时没出现问题,如下方所示,可在手机上模拟时遇到了下面会出现空白的情况,主要是100vh自动识别屏幕大小,在实际使用中若机型存在隐藏的地址栏和默认的底部按钮栏,或者该页面的一些组件设置,会导致页面下方部分空白。
view{
width: 100vh;
height: 100vh;
}
直接在后面加跳转链接,不过注意省略号啥的别少了或者多了。
<navigator class="box" url="../order/order">
changeURL: function (e) {
wx.navigateTo({
url: '../essay/essay',
success: function (res) {
// success
},
fail: function () {
// fail
},
complete: function () {
// complete
},
})
},
线性渐变,要用到的可以去网上找找更详细的说明,有很多玩法,可以增加更多颜色,也可以设置横向纵向渐变。
在小程序中会遇到很多盒子并排并列或者且要居中的情况,这里我总结一下:
justify-content属性:定义了项目在主轴上的对齐方式。
justify-content: center;
align-items属性:定义项目在交叉轴上如何对齐。
align-items: center;

如图所示,这是之前写的一个页面,两行分别两个盒子,都是用的两句对齐用法。
.Box1{
display: flex;
justify-content: center;
align-items: center;
}
强推一个大佬整理的,直接让你搞懂flex布局。
.wxml文件
<view class="tribeBox">
<block wx:key="index" wx:for="{{club}}">
<navigator class="{{currentTab == index ? 'tribe_active' : 'tribe_noactive'}}" id='{{index}}'
data-Id="{{item.Id}}" bindtap="changStyle" url="{{item.url}}">{{item.name}}</navigator>
</block>
</view>
.wxss文件
.tribeBox{
display: flex;
margin: 10rpx;
align-items: center;
justify-content: center;
}
.tribe_active{
margin-left: 40rpx;
margin-right: 60rpx;
font-size: 15px;
font-weight: 500;
color: rgb(241, 151, 16);
font-family:"Palatino Linotype", "Book Antiqua", Palatino, serif;
}
.tribe_noactive{
margin-left: 40rpx;
margin-right: 60rpx;
font-size: 15px;
font-weight: 500;
font-family:"Palatino Linotype", "Book Antiqua", Palatino, serif;
}
.js文件
Page({
data: {
club:[
{
Id: 1,
name: "关注",
url: '../attention/attention'
},
{
Id: 2,
name: "我的部落",
url: '../tribe/tribe'
},
{
Id: 3,
name: "视频",
url: '../microvideo/microvideo'
}
],
},
changStyle(e){
var that = this;
this.setData({
currentTab: e.currentTarget.id,
Id: e.currentTarget.dataset.Id,
})
}
})
这里主要是在函数中通过设定一个id,使组件在被点击后调用对应的wxss样式,在点击后id改变。并且提前将三个组件文字和跳转链接写在Page的data中,在跳转时选择对应列表中的信息。
刚开始写的时候测试的机型是最小的那种,虽然会在调试中会切换其他机型查看效果,但我一直写的是绝对距离,类似于margin-top: 42rpx直接固定,等我后期写了一段时间意识到这个问题以后大为震惊,含泪从头修改。熟练的估计不会这个问题,但对于刚上手的新手还是要注意一下。
button组件个人感觉限制有点多,首先官方设定button是自带属性可以调整大小,但是有个问题是它的宽度在wxss里改不了,要在wxml里面对应组件里面加style来修改,即使修改以后虽然页面上是宽度有所调整,但是实际上这个组件的原来宽度还是在那的,这个在一些情况下就很被动,需要一直调整间距,当有很多button和其他的组件需要一起居中对齐时这个问题就会很明显,会产生距离不一样的情况,所以后来学艺不精的我就用view或者navigator了。如图:
<button style="width:300rpx" >查看</button>
不过可能单纯是我不知道还有其他方法,没有把button的实际用途展现出来,实际上它的属性还是很多的。
如下
<navigator class="tribeBox1_in_box" url="../hot-topic/hot-topic">
<image class="tribeBox1_in_pic" src="/icon/热榜话题(1).png"/>
<view class="tribeBox1_in_text">热榜话题</view>
</navigator>
如下
<image class="tribeBox1_in_pic" src="/icon/热榜话题(1).png"/>
如下
changeURL: function (e) {
wx.navigateTo({
url: '../essay/essay',
success: function (res) {
// success
},
fail: function () {
// fail
},
complete: function () {
// complete
},
})
},

这里面按设计来看是想实现:一是对热度最高的前五进行筛选并展示,二是要在每个话题后面加一个图标,三是对前三的话题进行颜色的区分,也是最困难的一个部分。下面讲一下我的思路:
.wxml文件
<view class="hottopic_box1">
<view class="hottopic_box1_1">热榜话题</view>
<view class="hottopic_box1_2">
<view class="hottopic_box1_2_top" wx:key="index" wx:for="{{top}}">
<view class="hottopic_box1_2_topNum1" style="color:{{item.color}}">0{{item.id}}</view>
<view class="hottopic_box1_2_topText">{{item.text}}</view>
<image class="hottopic_box1_2_topImage" src="../../icon/热榜(1).png"/>
</view>
</view>
</view>
在view后面加图片倒不是难事,主要是对前三个的标题颜色进行区分。这边主要是两个想法,一个是每一行将两个text放一起,在前面将数字的格式改变;还有一个是在数据前面加上id和color,当数据输出时对应的颜色样式也会展现出来。小程序里面我用的是第二种,不过后来意识到好像第一种就很简单。而且这个子页面里面我对字体多下了点功夫,和其他的页面比讲究多了点。

主要就是背景里的椭圆和框框的格式。
.myBox1{
/* background: linear-gradient(to right,rgb(255, 153, 0), rgb(255, 204, 102)); */
background: linear-gradient(to right,rgb(243, 111, 4), rgb(228, 181, 89));
width: 140%;
height: 400rpx;
border-radius: 0rpx 0rpx 100% 100%;
margin-top: -120rpx;
}
.myBox1_in2{
margin-left: 18%;
margin-top: 50rpx;
width: 64%;
background-color: white;
display: flex;
justify-content: center;
align-items: center;
border-radius: 30rpx;
border-style: solid;
border-color: #cccccc;
border-width: 2rpx;
}
就这样啦,这个项目进行的过程也是我学习和成长的过程,从对小程序一无所知到逐渐熟练,能很快的将设计好的页面实现出来,上面也是我在制作过程中觉得挺有价值的一些东西,希望能帮助到你。
我正在使用RubyonRails3.0.9,我想生成一个传递一些自定义参数的link_toURL。也就是说,有一个articles_path(www.my_web_site_name.com/articles)我想生成如下内容:link_to'Samplelinktitle',...#HereIshouldimplementthecode#=>'http://www.my_web_site_name.com/articles?param1=value1¶m2=value2&...我如何编写link_to语句“alàRubyonRailsWay”以实现该目的?如果我想通过传递一些
SPI接收数据左移一位问题目录SPI接收数据左移一位问题一、问题描述二、问题分析三、探究原理四、经验总结最近在工作在学习调试SPI的过程中遇到一个问题——接收数据整体向左移了一位(1bit)。SPI数据收发是数据交换,因此接收数据时从第二个字节开始才是有效数据,也就是数据整体向右移一个字节(1byte)。请教前辈之后也没有得到解决,通过在网上查阅前人经验终于解决问题,所以写一个避坑经验总结。实际背景:MCU与一款芯片使用spi通信,MCU作为主机,芯片作为从机。这款芯片采用的是它规定的六线SPI,多了两根线:RDY和INT,这样从机就可以主动请求主机给主机发送数据了。一、问题描述根据从机芯片手
前言一般来说,前端根据后台返回code码展示对应内容只需要在前台判断code值展示对应的内容即可,但要是匹配的code码比较多或者多个页面用到时,为了便于后期维护,后台就会使用字典表让前端匹配,下面我将在微信小程序中通过wxs的方法实现这个操作。为什么要使用wxs?{{method(a,b)}}可以看到,上述代码是一个调用方法传值的操作,在vue中很常见,多用于数据之间的转换,但由于微信小程序诸多限制的原因,你并不能优雅的这样操作,可能有人会说,为什么不用if判断实现呢?但是if判断的局限性在于如果存在数据量过大时,大量重复性操作和if判断会让你的代码显得异常冗余。wxswxs相当于是一个独立
项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU
@作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors 1、什么是behaviors 2、behaviors的工作方式 3、创建behavior 4、导入并使用behavior 5、behavior中所有可用的节点 6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors 1、什么是behaviorsbehaviors是小程序中,用于实现
我想找到在某些文本中找到一些(让它是两个)句子的好方法。什么会更好-使用正则表达式或拆分方法?你的想法?应JeremyStein的要求-有一些例子示例:输入:ThefirstthingtodoistocreatetheCommentmodel.We’llcreatethisinthenormalway,butwithonesmalldifference.IfwewerejustcreatingcommentsforanArticlewe’dhaveanintegerfieldcalledarticle_idinthemodeltostoretheforeignkey,butinthis
我正在学习Ruby,遇到了inject。我正处于理解它的风口浪尖,但当我是那种需要真实世界的例子来学习一些东西的人时。我遇到的最常见的例子是人们使用inject来添加一个(1..10)范围的总和,我不太关心这个。这是一个任意的例子。在实际程序中我会用它做什么?我正在学习,所以我可以继续使用Rails,但我不必有一个以Web为中心的示例。我只需要一些我可以全神贯注的目标。谢谢大家。 最佳答案 inject有时可以通过它的“其他”名称reduce更好地理解。它是一个对Enumerable进行操作(迭代一次)并返回单个值的函数。它有许多有
我正在使用ruby1.8.7。p=lambda{return10;}deflab(block)puts'before'putsblock.callputs'after'endlabp以上代码输出为before10after我将相同的代码重构到这里deflab(&block)puts'before'putsblock.callputs'after'endlab{return10;}现在我收到LocalJumpError:意外返回。对我来说,这两个代码都在做同样的事情。是的,在第一种情况下我传递了一个过程,在第二种情况下我传递了一个block。但是&block将该block转换为pro
我在尝试使用Faraday将文件上传到网络服务时遇到问题。我的代码:conn=Faraday.new('http://myapi')do|f|f.request:multipartendpayload={:file=>Faraday::UploadIO.new('...','image/jpeg')}conn.post('/',payload)尝试发布后似乎没有任何反应。当我检查响应时this是我所看到的:#:post,:body=>#,#,@opts={}>,#],@index=0>>,#>],@ios=[#,#,@opts={}>,#],@index=0>,#],@index=0>
我使用raise(ConfigurationError.new(msg))引发错误我试着用rspec测试一下:expect{Base.configuration.username}.toraise_error(ConfigurationError,message)但这行不通。我该如何测试呢?目标是匹配message。 最佳答案 您可以使用正则表达式匹配错误消息:it{expect{Foo.bar}.toraise_error(NoMethodError,/private/)}这将检查NoMethodError是否由privateme