uniapp 样式篇
1.全局变量
- 项目根目录的 uni.scss 文件是uni-app内置的常用样式变量,这个文件会自动引入,开发者可直接引用这个变了
- 文件默认已经定义了常用的变量,开发者也可以在此基础上继续添加
/* 行为相关颜色 */
$uni-color-primary: #007aff;
$uni-color-success: #4cd964;
$uni-color-warning: #f0ad4e;
$uni-color-error: #dd524d;
/* 文字基本颜色 */
$uni-text-color:#333;//基本色
$uni-text-color-inverse:#fff;//反色
$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
$uni-text-color-placeholder: #808080;
$uni-text-color-disable:#c0c0c0;
/* 背景颜色 */
$uni-bg-color:#ffffff;
$uni-bg-color-grey:#f8f8f8;
$uni-bg-color-hover:#f1f1f1;//点击状态颜色
$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
/* 边框颜色 */
$uni-border-color:#c8c7cc;
/* 尺寸变量 */
/* 文字尺寸 */
$uni-font-size-sm:24rpx;
$uni-font-size-base:28rpx;
$uni-font-size-lg:32rpx;
/* 图片尺寸 */
$uni-img-size-sm:40rpx;
$uni-img-size-base:52rpx;
$uni-img-size-lg:80rpx;
/* Border Radius */
$uni-border-radius-sm: 4rpx;
$uni-border-radius-base: 6rpx;
$uni-border-radius-lg: 12rpx;
$uni-border-radius-circle: 50%;
/* 水平间距 */
$uni-spacing-row-sm: 10px;
$uni-spacing-row-base: 20rpx;
$uni-spacing-row-lg: 30rpx;
/* 垂直间距 */
$uni-spacing-col-sm: 8rpx;
$uni-spacing-col-base: 16rpx;
$uni-spacing-col-lg: 24rpx;
/* 透明度 */
$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
/* 文章场景相关 */
$uni-color-title: #2C405A; // 文章标题颜色
$uni-font-size-title:40rpx;
$uni-color-subtitle: #555555; // 二级标题颜色
$uni-font-size-subtitle:36rpx;
$uni-color-paragraph: #3F536E; // 文章段落颜色
$uni-font-size-paragraph:30rpx;
// light background
$light-bg-main: #f5f5f5;
$light-bg-gross: #fff;
$light-bg-menu: #f5f5f5;
// dark background
$dark-bg-main: #19223a;
$dark-bg-gross: #1d2742;
$dark-bg-menu: #2b3757;
// light font
$light-font-title: #666;
$light-font-gross: #666;
// dark font
$dark-font-title: rgba(255, 255, 255, 0.7);
$dark-font-gross: rgba(255, 255, 255, 0.7);
// light border
$light-border-divide: #dfdfdf;
// dark border
$dark-border-divide: #364364;
2.全局样式
- 定义在 App.vue 中的样式为全局样式,作用于每一个页面
- 一般将通用样式封装到css文件或者scss文件中,再通过 import 进行引入
- 如果未使用nvue页面,引入前请使用条件编译,避免额外的麻烦
<style lang="scss">
/*每个页面公共css */
//#ifndef APP-PLUS-NVUE
@import '@/common/common.scss';
@import '@/static/style/iconfont.css';
//#endif
</style>
3.页面高度和背景色
- page标签是应用的根标签,其高度默认由内容撑开,用来放置页面,可以说他是所有页面的根标签
- 在 H5 平台,page标签会被编译成 uni-page-body 标签,所有页面都放在这个 uni-page-body 标签下面
- 官方pages.json -> globalStyle -> backgroundColor 节点配置无效,要设置全局背景色可以在page标签中设置
- 要设置全局页面背景色,需要给page标签设定高度100%,不然看不到理想的效果,背景色可以在page标签中设定
//common.css 所有页面默认背景色
page{
height: 100%;
background-color: $uni-bg-color-grey;
}
- 特定页面背景色:直接在页面中设定page标签的样式即可
<style>
/* 覆盖全局样式 */
page{
background-color: azure;
}
</style>
<style scoped lang="scss">
//页面样式
.page-wrap{
}
</style>
4.样式自适应
- 通过rpx来实现自适应(750rpx刚好等于当前屏幕宽度),一般用于字体大小,padding,margin等
- 是否做自适应要看应用的使用场景,还要看项目中用到的插件有没有做自适应,像uni-ui没有使用rpx,他的组件宽高是固定的,使用时要留意,避免比他地方使用rpx布局,而uni-ui没有使用导致样式不统一
- 目前来说,手机端最小的屏幕是iPhone SE(375 * 667),大屏幕的有iPhone 14 Pro Max(430 * 392),还有一些手持设备(320 * 553),如果要兼容的设备分辨率跨度大,就一定要做自适应,跨度小可以不做
<style scoped>
.page-wrap{
font-size: 26rpx;
padding: 16rpx;
}
</style>
5.图标
- 图标可以使用 uni-ui 中的 uni-icons,支持常见的图标类型,支持字体大小(像素)和颜色配置
<!-- 编辑图标 -->
<uni-icons type="compose" size="20"></uni-icons>
<!-- 删除图标 -->
<uni-icons type="trash-filled" size="20"></uni-icons>
<!-- 扫码图标 -->
<uni-icons type="scan" size="20"></uni-icons>
- 更多图标推荐使用iconfont图标库
6.样式穿透
应用场景:页面中调用组件,需要覆盖组件的原有样式
为何会有样式穿透:为了防止页面样式污染全局,编译样式是会在选择器链条上的最后一个选择器上面挂在data属性选择器,以此来限制此选择器的作用域,但是组件内部的标签本身肯定没有这个动态的data属性,所以直接写样式无效

解决办法:使用样式穿透,使其能正常覆盖组件的样式(原理:改变data属性选择器的位置,不再作用域最后一个选择器)

注意:使用scss语法后,scoped属性一直生效,即使移除也没影响,不知道是不是框架的bug
注意:样式穿透的原理得知,全局样式无需样式穿透
7.分页列表布局
- 一个常见的分页列表布局:顶部搜索栏底部提交按钮固定不动,而中间放置列表,顶部和底部使用定位脱离文档流,为了不遮挡中间的内容,给页面容器设定padding-top和padding-bottom即可
- 难点在于:需要手动计算顶部和底部占用的高度,以此来设置padding-top和padding-bottom,可以使用calc()进行计算
<template>
<view class="page-wrap has-fixed-search has-fixed-btn">
<!-- 顶部固定搜索 -->
<view class="fixed-search-box">
<uni-easyinput placeholder="请输入"></uni-easyinput>
</view>
<!-- 列表内容 -->
<view></view>
<!-- 底部固定搜索 -->
<view class="fixed-btn-box">
<button size="default" type="default">提交</button>
</view>
</view>
</template>
<script>
export default {
data() {
return {}
}
}
</script>
<style scoped lang="scss">
view{
box-sizing: border-box;
}
.page-wrap{
font-size: 26rpx;
padding: 16rpx;
.fixed-search-box{
position: fixed;
/* #ifndef H5 */
top: 0px;
/* #endif */
/* #ifdef H5 */
top: 44px;
/* #endif */
left:0;
width: 100%;
z-index: 99;
padding: 16rpx;
background-color: #fff;
}
.fixed-btn-box{
position: fixed;
bottom: 0;
left: 0;
width: 100%;
padding: 16rpx;
background-color: #fff;
}
}
/* 防止顶部遮挡 */
.page-wrap.has-fixed-search{
/* 固定高度 36px padding 16rpx */
padding-top: calc(36px + 16rpx);
}
/* 防止底部遮挡 */
.page-wrap.has-fixed-btn{
/* 固定高度 46px padding 16rpx */
padding-bottom: calc(46px + 16rpx);
}
</style>
uniapp 样式篇的更多相关文章
- WPF 4 DataGrid 控件(自定义样式篇)
原文:WPF 4 DataGrid 控件(自定义样式篇) 在<WPF 4 DataGrid 控件(基本功能篇)>中我们已经学习了DataGrid 的基本功能及使用方法.本篇将继续 ...
- WPF自定义样式篇-DataGrid
WPF自定义样式篇-DataGrid 先上效果图: 样式: <!--DataGrid样式--> <Style TargetType="DataGrid"& ...
- button样式篇一(ant Design React)
这篇来介绍button中elementUi.iview.ant中样式结构 ant Design react ant-react中button分两个文件less: mixins.less:根据butto ...
- Qt 之 模仿 QQ登陆界面——样式篇
一.简述 今天晚上花了半天时间从QQ登录界面抠了些图,顺便加了点样式基本上实现了QQ的登陆界面全部效果.虽不说100%相似,那也有99.99%相似了哈O(∩_∩)O. QQ好像从去年开始,登录界面有了 ...
- 移动端HTML5开发问题汇总-样式篇
问题:Android 上圆形图片使用 border 时,边框显示变形 解决:给 img 外嵌套一个元素,为其使用圆角 <div> <img src=""> ...
- jquery样式篇
1.jquery: 1.1简介 jquery是一个轻量级的javascript库.版本号分1.x版本和2.x版本,2.x版本不再支持IE6 7 8,而更好的支 持移动端开发. 每一个版本分为开发版和压 ...
- jQuery基础--样式篇(5)
jQuery的属性与样式 (1).attr()与.removeAttr():每个元素都有一个或者多个特性,这些特性的用途就是给出相应元素或者其内容的附加信息. attr()有4个表达式 attr(传入 ...
- jQuery基础--样式篇(4)
jQuery选择器: 1.id选择器:通过id名来获取节点,id是唯一的,每个id在页面上只能使用一次. $( "#id" ) 2.类选择器:通过class样式类名来获取节点 $( ...
- react学习(四)之设置 css样式 篇
react中设置css样式 方法一: 行内样式:使用{{ }},与正常jsx中插入js代码不一样,这里需要两个括号. <div style={ { float: 'right',} }> ...
- jQuery-1.样式篇---属性与样式
jQuery的属性与样式之.attr()与.removeAttr() 每个元素都有一个或者多个特性,这些特性的用途就是给出相应元素或者其内容的附加信息.如:在img元素中,src就是元素的特性,用来标 ...
随机推荐
- Python — 循环语句
while循环语句 语法: 嵌套使用: for循环语句:(for循环外部不允许访问临时变量) 语法: 使用: 待处理的数据集: range语句: 嵌套for循环: continue: break: 随 ...
- HTTP——响应数据格式
HTTP响应数据格式 状态码分类: 常见的状态响应码:
- QT6 Widgets深入剖析
QT6 Widgets深入剖析 使用AI技术辅助生成 QT界面美化视频课程 QT性能优化视频课程 QT原理与源码分析视频课程 QT QML C++扩展开发视频课程 免费QT视频课程 您可以看免费100 ...
- ServiceMesh 2:控制面和数据面的职责(图文总结)
★ ServiceMesh系列 1 Service Mesh介绍 之前的章节我们详细介绍了ServiceMesh的基础知识. ServiceMesh 是最新一代的微服务架构,作为一个基础设施层,能够与 ...
- CentOS7 安装配置笔记 v2
1.通过镜像安装 CentOS72.安装 wget 下载工具3.修改镜像地址4.安装 nano 文本编辑工具5.安装 dotnet core6.安装vsftpd7.设置 firewalld8.为 do ...
- 深入浅出 Kubernetes 项目网关与应用路由
KubeSphere 项目网关与应用路由提供了一种聚合服务的方式,将集群的内部服务通过一个外部可访问的 IP 地址以 HTTP 或 HTTPs 暴露给集群外部.应用路由定义了这些服务的访问规则,用户可 ...
- Springboot异步事件配置和使用
Spring中提供了完整的事件处理机制,本身底层内置实现了一些事件和监听,同时支持开发者扩展自己的事件和监听实现. 一般这种基于事件的实现在项目实际开发中我们主要用来解耦,和做异步处理(默认是同步), ...
- 一个整合性、功能丰富的.NET网络通信框架
前言 最近有不少同学问:.NET网络通信框架有什么好推荐的吗?今天大姚给大家分享一款基于Apache License开源的一个整合性.功能丰富的.NET(包括 C# .VB.Net.F#)网络通信框架 ...
- Docker容器与守护进程运维 --项目四
一.Docker容器配置进阶 1.容器的自动重启 Docker提供重启策略控制容器退出时或Docker重启时是否自动启动该容器. 容器默认不支持自动重启,要使用 --restart 选项指定重启策略. ...
- docker bulid tag push到自己的docker hub 仓库
-t(或 --tag)参数:用于给构建的镜像指定标签(tag).标签的格式通常是 [仓库名/][用户名/]镜像名:版本号 -f(或 --file)参数: 指定构建镜像所使用的 Dockerfile 的 ...