小程序列表页 一行3个图标从左到右平均排列

本文介绍了一种使用CSS的flex布局实现子元素等宽排列的方法,通过设置子元素宽度为32%,并利用:nth-child(3n)选择器调整非三的倍数子元素的margin-right属性,实现了美观且响应式的布局效果。

效果如下

简单分析: 一个大盒子套n个子盒子,子盒子3个一排,则可分配为 每个子盒子宽度占32%, 3*32%=96%,中间缝隙2个占4%,那么就只要每排第一个和第二个 margin-right占2%就可以达到平均分配了

wxml就不写了, 大盒子套小盒子  

/*父元素-父盒子*/

.father-list{
  width:100%;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
}


/*子元素-子盒子*/

.son-item{
  width:32%;
  display:flex;
  flex-direction: column;
  align-items: center;
  background-color: #fff;
  border-radius:10rpx;
  margin-top:15rpx;
}

/*子盒子不是第3n个的*/

.son-item:not(:nth-child(3n)){
  margin-right: 2%;
}

重点在子元素选择器.son-item:not(:nth-child(3n))       ,当子元素不是第3n个时,加margin-right样式,

 

 

 

 

<think>好的,用户想要一个带有图标行布局的个人中心页面的微信小程序示例代码。首先,我需要回忆微信小程序的组件和布局方式。个人中心通常包括用户头像、昵称,然后是多个功能项,每个功能项可能有图标、文字和右箭头。 参考用户提供的引用内容,比如引用[2]提到的align-items属性,可以用来设置Flex布局中的对齐方式。还有引用[4]提到的rpx单位适配屏幕,这些都很重要。另外,引用[3]提到的创建编译模式可能对用户测试有帮助。 首先,结构上,个人中心页面一般使用滚动视图<scroll-view>来容纳内容。顶部区域可能是一个头像和昵称,可以用Flex布局垂直居中。然后每个功能项使用<view>,内部包含图标<image>、文本和箭头图标,用Flex布局水平排列,两端对齐。 图标来源方面,用户可能需要使用本地图片或网络资源。考虑到微信小程序的大小限制,建议使用网络图标或Base64编码的内联图片。同时,样式方面需要使用rpx来适配不同屏幕,如引用[4]所示。 在WXML部分,需要循环渲染功能列表,使用wx:for遍历数组。每个功能项的左边图标、中间文字、右边箭头,用Flex布局的justify-content: space-between实现两端对齐。右边的箭头可以用绝对定位或直接放在Flex容器中。 WXSS部分,需要设置容器的样式,特别是使用Flex布局相关属性,如align-items和justify-content。每个功能项的边框可能需要用伪元素来实现,比如在底部添加边框,并调整位置。 JavaScript部分,data对象中包含用户信息和功能列表数据。功能列表可以是一个数组,每个元素包含图标路径、标题和跳转路径。可能需要添加事件处理函数,比如跳转到其他页面。 还需要考虑图片路径是否正确,以及rpx单位的使用是否恰当。同时,提醒用户替换图标路径,并根据需要调整样式。可能还需要处理点击事件,比如navigateTo跳转页面。 最后,根据用户提供的引用,特别是引用[1]关于pages配置,需要确保页面路径正确,并在app.json中添加页面。引用[3]提到的编译模式可以帮助用户快速测试该页面。 总结步骤:结构布局使用Flex,图标和文字排列,数据循环渲染,样式适配,配置页面路径。然后生成示例代码,并附上相关问题。</think>### 微信小程序图标行布局个人中心实现步骤 #### 1. WXML页面结构 ```html <!-- pages/userCenter/userCenter.wxml --> <scroll-view scroll-y class="container"> <!-- 用户信息区域 --> <view class="user-info"> <image class="avatar" src="/images/avatar.png"></image> <text class="nickname">微信用户</text> </view> <!-- 功能列表 --> <view class="function-list"> <block wx:for="{{functions}}" wx:key="title"> <view class="function-item" bindtap="navigateTo" data-url="{{item.url}}"> <image class="item-icon" src="{{item.icon}}"></image> <text class="item-title">{{item.title}}</text> <image class="arrow" src="/images/arrow-right.png"></image> </view> </block> </view> </scroll-view> ``` #### 2. WXSS样式设计 ```css /* pages/userCenter/userCenter.wxss */ .container { height: 100vh; background-color: #f5f5f5; } .user-info { height: 300rpx; background-color: #fff; display: flex; flex-direction: column; align-items: center; justify-content: center; } .avatar { width: 120rpx; height: 120rpx; border-radius: 50%; } .nickname { margin-top: 20rpx; font-size: 32rpx; } .function-list { margin-top: 20rpx; background-color: #fff; } .function-item { position: relative; padding: 30rpx; display: flex; align-items: center; } .function-item::after { content: &#39;&#39;; position: absolute; left: 30rpx; right: 0; bottom: 0; height: 1rpx; background-color: #eee; } .item-icon { width: 40rpx; height: 40rpx; margin-right: 20rpx; } .item-title { flex: 1; font-size: 28rpx; } .arrow { width: 32rpx; height: 32rpx; } ``` #### 3. JavaScript逻辑 ```javascript // pages/userCenter/userCenter.js Page({ data: { functions: [ { icon: &#39;/images/icon-order.png&#39;, title: &#39;我的订单&#39;, url: &#39;/pages/order/order&#39; }, { icon: &#39;/images/icon-address.png&#39;, title: &#39;收货地址&#39;, url: &#39;/pages/address/address&#39; }, { icon: &#39;/images/icon-setting.png&#39;, title: &#39;系统设置&#39;, url: &#39;/pages/settings/settings&#39; } ] }, navigateTo(e) { const url = e.currentTarget.dataset.url wx.navigateTo({ url: url }) } }) ``` #### 4. 图片资源准备 ``` 项目目录结构建议: - images/ - avatar.png 用户头像 - arrow-right.png 右箭头 - icon-order.png 订单图标 - icon-address.png地址图标 - icon-setting.png设置图标 ``` #### 5. 页面配置(app.json) ```json { "pages": [ "pages/userCenter/userCenter", // ...其他页面 ], "window": { "navigationBarTitleText": "个人中心" } } ``` ### 关键实现说明: 1. **布局核心**:使用Flex布局实现水平排列元素[^2],`justify-content: space-between`控制元素间距 2. **屏幕适配**:所有尺寸单位使用rpx实现响应式布局[^4] 3. **列表渲染**:通过`wx:for`循环渲染功能列表项[^1] 4. **交互处理**:`bindtap`绑定点击事件实现页面跳转 5. **样式优化**:使用伪元素实现列表项分割线[^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值