微信小程序学习(三)

样式与布局https://blog.csdn.net/qq_38060125/article/details/149577848

📝 练习任务

✅1. 登录按钮居中布局

  • 使用 Flex 布局实现水平垂直居中
  • 设置按钮样式,包括背景色、边框、圆角等

WXML 文件:

html 复制代码
<view class="container">
  <button class="login-btn">登录</button>
</view>

WXSS 文件

容器的 Flex 布局
css 复制代码
.container {
  display: flex; /* 启用 Flex 布局 */
  justify-content: center; /* 水平居中 */
  align-items: center; /* 垂直居中 */
  height: 100vh; /* 设置容器高度为整个可视窗口高度 */
  background-color: #f5f5f5; /* 设置背景色,便于观察效果 */
}
登录按钮样式
css 复制代码
.login-btn {
  background-color: #007aff; /* 按钮背景色 */
  color: #ffffff; /* 按钮文字颜色 */
  font-size: 16px; /* 按钮文字大小 */
  padding: 12px 24px; /* 按钮内边距 */
  border: none; /* 去除默认边框 */
  border-radius: 8px; /* 设置圆角 */
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); /* 添加阴影,增加按钮的立体感 */
  cursor: pointer; /* 鼠标样式(调试环境适用) */
  text-align: center; /* 文本居中 */
}

.login-btn:active {
  background-color: #005eff; /* 按下时调整按钮背景色 */
}

✅2. 商品展示列表

  • 创建两列或多列的商品展示列表
  • 使用 flex-wrap 实现自动换行
  • 添加商品图片、名称、价格等信息

WXML 文件

html 复制代码
<view class="container">
  <view class="product-item" wx:for="{{products}}" wx:key="id">
    <image class="product-image" src="{{item.image}}" mode="aspectFill"></image>
    <text class="product-name">{{item.name}}</text>
    <text class="product-price">¥{{item.price}}</text>
  </view>
</view>

JS 文件

css 复制代码
Page({
  data: {
    products: [
      { id: 1, name: '奥特曼玩具', price: 99, image: 'https://via.placeholder.com/150' },
      { id: 2, name: '铠甲勇士玩具', price: 50, image: 'https://via.placeholder.com/150' },
      { id: 3, name: '假面骑士玩具', price: 44, image: 'https://via.placeholder.com/150' },
      { id: 4, name: '变形金刚玩具', price: 200, image: 'https://via.placeholder.com/150' },
      { id: 5, name: '漫威英雄玩具', price: 150, image: 'https://via.placeholder.com/150' },
      { id: 6, name: '积木玩具', price: 60, image: 'https://via.placeholder.com/150' }
    ]
  }
});

WXSS 文件

css 复制代码
.container {
  display: flex;
  flex-wrap: wrap; /* 自动换行 */
  gap: 16px; /* 设置子元素之间的间距 */
  justify-content: center; /* 横向居中对齐元素 */
}

.product-item {
  flex: 0 1 calc(50% - 16px); /* 每行两列,计算宽度减去间距 */
  box-sizing: border-box; /* 让宽度包含内边距和边框 */
  border: 1px solid #ddd; /* 添加边框 */
  border-radius: 8px; /* 添加圆角 */
  overflow: hidden; /* 确保内容不会超出边界 */
  text-align: center; /* 文本居中对齐 */
  background-color: #fff; /* 设置背景色 */
  padding: 8px; /* 内容内边距 */
}

.product-image {
  width: 100%; /* 图片宽度占满父容器 */
  height: 120px; /* 固定图片高度 */
  object-fit: cover; /* 图片适应容器 */
  border-radius: 8px; /* 圆角与外框一致 */
}

.product-name {
  font-size: 16px; /* 商品名称字体大小 */
  font-weight: bold; /* 加粗字体 */
  margin-top: 8px; /* 与图片和文字之间的间距 */
}

.product-price {
  font-size: 14px; /* 商品价格字体大小 */
  color: #007aff; /* 设置价格颜色为蓝色 */
  margin-top: 4px; /* 与名称之间的间距 */
}

✅3. 响应式样式

  • 使用 @media 查询实现横竖屏切换
  • 设置不同屏幕方向下的布局方案
  • 测试在模拟器和真机上的表现.

WXSS 文件

主要添加@media这个。

css 复制代码
.product-item {
  flex: 0 1 calc(50% - 16px); /* 每行两列,计算宽度减去间距 */
  box-sizing: border-box; /* 让宽度包含内边距和边框 */
  border: 1px solid #ddd; /* 添加边框 */
  border-radius: 8px; /* 添加圆角 */
  overflow: hidden; /* 确保内容不会超出边界 */
  text-align: center; /* 文本居中对齐 */
  background-color: #fff; /* 设置背景色 */
  padding: 8px; /* 内容内边距 */
}
@media screen and (orientation: landscape) {
  .product-item {
    flex: 0 1 calc(25% - 16px); /* 每行四列,宽度为 25% 减去间距 */
  }
}

app.js

添加这个 wx.setPageOrientation ({ orientation: 'landscape', complete: console.log } )

cpp 复制代码
App({
  onLaunch() {
    // 展示本地存储能力
    const logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs)
    wx.setPageOrientation ({ orientation: 'landscape', complete: console.log } )
   //设置为横屏模式
    // 登录
    wx.login({
      success: res => {
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
      }
    })
  },

这样就可以看到不同的差别。

相关推荐
.NET修仙日记17 分钟前
.NET WinForms + WPF 综合学习路线:从传统到现代的.NET桌面开发
学习·c#·.net·wpf·.net core·winforms
crary,记忆1 小时前
MFE: React + Angular 混合demo
前端·javascript·学习·react.js·angular·angular.js
Yupureki1 小时前
从零开始的C++学习生活 11:二叉搜索树全面解析
c语言·数据结构·c++·学习·visual studio
电子云与长程纠缠2 小时前
Blender入门学习02
学习·blender
再睡一夏就好2 小时前
【C++闯关笔记】STL:deque与priority_queue的学习和使用
java·数据结构·c++·笔记·学习·
蚍蜉撼树谈何易2 小时前
3.cuda执行模型
学习
敲代码的嘎仔2 小时前
JavaWeb零基础学习Day4——Maven
java·开发语言·学习·算法·maven·javaweb·学习方法
遇印记2 小时前
网络运维学习笔记
数据结构·笔记·学习
四谎真好看3 小时前
Java 黑马程序员学习笔记(进阶篇20)
java·笔记·学习·学习笔记
D.....l3 小时前
STM32学习(MCU控制)(GPIO)
stm32·嵌入式硬件·学习