CSS3布局笔记

发表于 2021-12-08 1439 字 8 min read

~ 涵盖了CSS3新特性、Meta标签及Normalize.css初始化。重点讲解了流式布局、Flex弹性布局与rem适配方案(含Media Queries与flexible.js),并带你掌握Less预编译的高效用法。最后还介绍了Bootstrap框架的栅格系统与响应式工具,助你轻松搞定各种屏幕适配,让网页开发又快又萌喵!

移动端开发基础

CSS3新增选择器

~ 表示为兄弟选择器,选择同级中的所有元素。
+表示为相邻兄弟选择器,选择紧挨着自己的同级元素。

头部meta标签设置

<meta name="viewport" content="width=device-width, initial-scale=1.0 user-scalable=no, initital-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">

特殊样式

雅虎官网reset样式外,还需要清除一些移动端的默认样式。
点击高亮需要清除:
-webkit-tap-highlignt-color:transparent;
在移动端浏览器默认的外观在IOS上加上这个属性,才能够给按钮和输入框自动以样式
input {
    -webkit-appearance:none;
}
禁用长按页面时的弹出菜单
img,a {
    -webkit-touch-callout:none;
}
页面平滑滚动:
html, body { scroll-behavior:smooth; }

CSS初始化normalize.css

normalize.css。是一个可以定制的CSS文件,它让不同的浏览器。渲染网页时的格式更加统一。
[官网地址](http://necolas.github.io/normalize.css/)

流式布局

注意事项

制作过程中。需要定义页面的最大和最小支持宽度
max-width、min-width

渐变背景效果

background-image: linear-gradient();

web图片压缩

webp,dpg

flex布局

flex布局父项常见属性

flex-direction: 设置主轴的方向;
justify-content: 设置主轴上的子元素排列方式,space-beeween两贴边,平均分布对齐;
flex-wrap: 设置子元素是否换行;
align-content: 设置侧轴上的子元素的排列行方式(多行);
align-items: 设置侧轴上的子元素的排列方式(单行),stretch拉伸到最大宽度;
flex-flow: 复合属性,相当于同时设置了flex-direction和flex-wrap;

flex布局,子项目的相关属性

flex: ;flex属性用于定义分配父盒子的剩余空间。用flex来表示占多少份数。用于两边固定,中间占满的流式布局。
align-self: ;控制子项自己在侧轴上的排列方式
order: ;order属性定义项目的排列顺序

rem适配布局

rem的基准

rem的基准是参考html元素字号大小的倍速。

媒体查询

@media查询,可以针对不同的媒体类型,定义不同的样式。
针对不同屏幕尺寸设置不同的样式。

语法规范

@meidia开头 mediatype 媒体类型 and not only or 关键字 media feature媒体特性,小括号包裹。 @meidia mediatype and|not|only (mediafeature){

}

媒体类型

将不同的终端设备划分成不同的类型,成为媒体类型。
值:all(所有设备)、print(打印机)、screen(屏幕)

媒体特性

值:width、min-width、max-width

实现思路

按照从大到小,或者从小答道的思路、顺序进行书写。这样让代码更加的整洁。一般都是从小到大进行书写。

媒体查询引入资源

语法规范:
<link rel="stylesheet" media="mediatype and|not|only (mediafeature)" href="">

rem适配布局方案。

rem适配方案技术使用(市场主流)
技术方案1:less+@meida+rem
技术方案2:flexible.js+rem(方案2更加简单)

flexible.js

简介高效的rem适配方案,flexible.js布局方案。
原理是把设备划分为了十等份。比如设计稿是750px。把750/10,即为html根元素大小。
然后,其他尺寸用设计稿rem单位 / 75.
[github地址](https://github/amfe/lib-flexible)
如果需要用媒体查询叠加掉flexible。添加如下格式的媒体查询。!important权重提升关键字。
@media screen and (min-width: 750px) {
    html {
        font-size: 75px !important;
    }
}

less预编译

CSS弊端

非程序式语言,没有变量、函数、SCOPE(作用域)等概念
CSS没有很好的计算能力。
不方便维护,代码冗余且重复。
使用REM表示一些单位的时候,需要手动进行运算。CSS不能够进行运算。

安装less

首先需要安装node.js
node -v;查看node.js平台的版本号
npm install -g less;进行全局安装less插件.-g是表示全局的意思
lessc -v;检测less版本号

less变量

@变量名:value;
less变量名区分大小写。不能包含特殊符号,数字不能作为开头。

less编译

在less根目录使用CMD命令:"lessc style.less>style.css";
VSC内安装插件。EASY LESS插件。

less嵌套语法

ul{
    li {
        a {

        }
    }
}
内层选择器的前面没有&符号,则它被解析为父选择器的后代;
如果有&符号,它就被解析为父元素自身或父元素的伪类。

less运算

less提供了+,-,*,/等算术运算。
less的运算符左右必须加空格。

less导入文件

在less里可以这样导入其他的less文件。
@import "less文件名";//不用附带后缀名

Bootstrap UI开发框架

版本

为bootstrapV3版本的使用笔记

布局容器

.container类
响应式布局的容器。固定宽度
大屏(>=1200px)宽度为1170px
中屏(>=992px)宽度为970px
小屏(>=768px)宽度为750px
超小屏(100%)

.container-fluid类
流式布局容器 100vw宽度
适合于移动端页面的开发。

栅格系统

可以把网页布局划分为等宽的列,然后通过列数定义来模块化页面布局。
栅格的行必须包含在.container内,以便为其赋予合适的排列。
行: .row
列: .col-xs(特小.vw<768px)
    .col-sm-number(小.vw>=768px)
    .col-md-number(大.vw>=992px)
    .col-lg-number(特大.vw>=1200px)

列偏移

col-xl-offset-numer;在特大屏幕内设置偏移份数

列排序

col-xl-push-number;把元素往后退
col-xl-pull-numer;把元素往前推

响应式工具

hidden-xs;在超小屏内隐藏
hidden-sm;小屏内隐藏
hidden-md;中屏内隐藏
hidden-lg;大屏内隐藏
(上面那hidden换成visible就是可见。)

自定义页面滚动条

.main {
    // background-color: red;
    width: 100%;
    height: 100vh;
    // x轴隐藏,设置y轴滚动
    overflow-x: hidden;
    z-index: 0;
    margin-right: 12px;
    // 以下滚动条样式
    &::-webkit-scrollbar {
        width: 10px;
        // height: 20px;
        background-color: var(--menu-alive-bgcolor);
        border-radius: 12px;
    }
    &::-webkit-scrollbar-thumb {
        border-radius: 10px;
        // -webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2);
        background: var(--menu-alive-color);
    }
    &::-webkit-scrollbar-track {
        // -webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2);
        // border-radius: 0;
        background: var(--menu-alive-bgcolor);
    }
}