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 样式篇的更多相关文章

  1. WPF 4 DataGrid 控件(自定义样式篇)

    原文:WPF 4 DataGrid 控件(自定义样式篇)      在<WPF 4 DataGrid 控件(基本功能篇)>中我们已经学习了DataGrid 的基本功能及使用方法.本篇将继续 ...

  2. WPF自定义样式篇-DataGrid

    WPF自定义样式篇-DataGrid 先上效果图: 样式:  <!--DataGrid样式-->    <Style TargetType="DataGrid"& ...

  3. button样式篇一(ant Design React)

    这篇来介绍button中elementUi.iview.ant中样式结构 ant Design react ant-react中button分两个文件less: mixins.less:根据butto ...

  4. Qt 之 模仿 QQ登陆界面——样式篇

    一.简述 今天晚上花了半天时间从QQ登录界面抠了些图,顺便加了点样式基本上实现了QQ的登陆界面全部效果.虽不说100%相似,那也有99.99%相似了哈O(∩_∩)O. QQ好像从去年开始,登录界面有了 ...

  5. 移动端HTML5开发问题汇总-样式篇

    问题:Android 上圆形图片使用 border 时,边框显示变形 解决:给 img 外嵌套一个元素,为其使用圆角 <div> <img src=""> ...

  6. jquery样式篇

    1.jquery: 1.1简介 jquery是一个轻量级的javascript库.版本号分1.x版本和2.x版本,2.x版本不再支持IE6 7 8,而更好的支 持移动端开发. 每一个版本分为开发版和压 ...

  7. jQuery基础--样式篇(5)

    jQuery的属性与样式 (1).attr()与.removeAttr():每个元素都有一个或者多个特性,这些特性的用途就是给出相应元素或者其内容的附加信息. attr()有4个表达式 attr(传入 ...

  8. jQuery基础--样式篇(4)

    jQuery选择器: 1.id选择器:通过id名来获取节点,id是唯一的,每个id在页面上只能使用一次. $( "#id" ) 2.类选择器:通过class样式类名来获取节点 $( ...

  9. react学习(四)之设置 css样式 篇

    react中设置css样式 方法一: 行内样式:使用{{  }},与正常jsx中插入js代码不一样,这里需要两个括号. <div style={ { float: 'right',} }> ...

  10. jQuery-1.样式篇---属性与样式

    jQuery的属性与样式之.attr()与.removeAttr() 每个元素都有一个或者多个特性,这些特性的用途就是给出相应元素或者其内容的附加信息.如:在img元素中,src就是元素的特性,用来标 ...

随机推荐

  1. 合合信息AI图像内容安全新技术亮相WAIC2023,防范“生成式造假”

    开年以来,多个图像生成软件在全球迅速蹿红,其作画逼真程度"技惊四座".AI一路"狂飙",让生成.篡改等多形式的图片伪造的门槛变得更低,由此引发的隐患也令人忧虑. ...

  2. 知识增强深度学习及其应用:综述《Knowledge-augmented Deep Learning and Its Applications: A Survey》(下)

    论文:Knowledge-augmented Deep Learning and Its Applications: A Survey GitHub: arXiv上的论文. (接着来) 4 用经验知识 ...

  3. TypeScript – Work with JavaScript Library (using esbuild)

    前言 JavaScript 早期是没有 Modular 和 Type (类型) 的. 随着这几年的普及, 几乎有维护的 Library 都有 Modular 和 Type 了. 但万一遇到没有 Mod ...

  4. PHP运算符优先级(摘自在线工具)

    PHP运算符优先级 结合方向 运算符 附加信息 非结合 clone new clone 和 new 左 [ array() 非结合 ++ -- 递增/递减运算符 非结合 ~ - (int) (floa ...

  5. 虚拟dom的优缺点

    虚拟dom 是js模拟的一颗dom树,也是 js 对象 : 虚拟dom 时相对于 真实dom而言的,操作真实 dom 开销太大,降低了性能,所以使用 虚拟 dom 替代真实 dom 完成操作和计算功能 ...

  6. apisix~kafka-logger插件

    作用 将http请求与响应的内容发到kafka的topic,以json的形式发送存储 配置相关 log_format为自定义配置字段,添加后,默认的请求响应消息将被覆盖 { "_meta&q ...

  7. linux 基础(3)基本文件操作

    目录的基本操作 在 linux 文件系统里,以斜杠 / 开头的路径是绝对路径,从根目录开始寻找:其他的路径则都是相对路径,从当前目录(working directory)开始寻找. 相对目录中常用的符 ...

  8. windows宝塔面板请使用正确的入口登录面板问题解决记录

    问题起因:浏览器升级面板的时候,浏览器卡死,导致登录不进,cmd里面修复或者更新依然显示请使用正确的入口登录面板. 解决方法: 先停止宝塔面板,然后将下面这个目录删掉 C:\Program Files ...

  9. 熟悉使用DOS操作命令

    DOS操作实验 一.实验目的 DOS是市场上早期获得巨大成功的桌面操作系统,现在很多同学都不太熟悉.本实验的目的就是让同学们读者从操作系统理论的观点来重新认识它们,了解和掌握DOS有关用户接口的特点. ...

  10. ABC370 E - Avoid K Partition

    ABC370 E - Avoid K Partition 求一个序列的合法划分方案数.一种划分合法当且仅当没有一个子串的和是 \(k\). 由于是否存在子串和为 \(k\) 很重要,因此考虑将它加入状 ...