1. 新增选择器
1.1 属性选择器
/* 可以自定义属性 */ /* 1、[x] 选择所有带有x属性元素 */ [class] {} /* 2、[x=y] 选择所有使用x="y"的元素 */ [class=head1] {} /* 3、[x|=y] 选择 x 属性以 y- 为开头的所有元素 */ [name|=eng] {} /* 4、[x^=y] 选择每一个x属性的值以"y"开头的元素 */ a[href^="http"] {} /* 5、[x$="y"] 选择每一个x属性的值以"y"结尾的元素 */ [href$="com"] {} /* 6、[x*="y"] 选择每一个x属性的值包含字符串"y"的元素 */ [href*="www"] {}
1.2 伪元素选择器
/* 1、::before 在每个<p>元素之前插入内容(里边的前边) */ [box]::before {} /* 2、::after 在每个<p>元素之后插入内容 */ [box]::after {} /* 3、::first-letter 选择每一个<P>元素的第一个字母或者第一个汉字 */ /* 4、::first-line 选择每一个<P>元素的第一行 */
1.3 伪类选择器
/* 1、p:nth-child(2) 选择p元素的父元素的第二个子元素 */ .list li:nth-child(2) {} /* 2、p:nth-last-child(2) 选择p元素的父元素的倒数第二个子元素 */ .list li:nth-last-child(2) {} /* 3、p:first-child 选择p元素的父元素的第一个子元素 */ .list li:first-child {} /* 4、p:last-child 选择p元素的父元素的最后一个子元素 */ .list li:last-child {} /* 5、:nth-of-type(n) p:nth-of-type(2) 选择每个p元素的父元素的第二个p元素 */ .list li:nth-of-type(5) {}
2. 新增样式
2.1 颜色标识
/* hsl(色调(0-360),饱和度(0-100%),明度(0-100%)) */ background-color: hsl(281, 100%, 50%);
2.2 文本效果
/* 省略号 */ /* 强制文本同一行显示 */ white-space: nowrap; /* 溢出内容隐藏 */ overflow: hidden; /* 省略号 (缺一不可)*/ text-overflow: ellipsis; /* 水平阴影尺寸、垂直阴影属性、阴影的模糊程度、阴影的颜色 */ text-shadow: 10px 20px 5px hsl(120, 100%, 80%); /* 滚动条 */ overflow: scroll; /* 超出显示滚动条 */ overflow: auto; /* 超出显示滚动条,不超出不显示 */
2.3 盒子效果
/* 盒子阴影: 水平阴影尺寸、垂直阴影尺寸、阴影的模糊程度、颜色 */ box-shadow: 20px 20px 20px violet; /* 怪异盒模型:边框,内边距不影响元素尺寸*/ box-sizing: border-box; /* *边框图片 80为边框尺寸 */ border-image: url(images/莫甘娜.jpg) 80 round; /* 三角形: 盒子的宽高设为0,边框填满盒子、transparent 边框透明 */ width: 0px; height: 0px; border-top: 100px solid violet; border-bottom: 100px solid transparent; border-left: 100px solid violet; border-right: 100px solid transparent; /* 按钮禁用 */ <!-- disabled 元素的属性 按钮禁用 --> <!-- disabled disabled=“disabled” disabled=“true” --> <button disabled></button> <input type="button" value="按钮" disabled="true">
3. 渐变过渡
3.1 渐变
/* 渐变:两个及以上的颜色之间的平稳过渡 */ /* 渐变的分类:线性渐变、径向渐变 */ /* 线性渐变: */ background-image: linear-gradient(to top,violet,blue); /* 默认从上到下 从下到上 to top, 从左下到右上 to right top, */ /* 径向渐变:*/ background-image: radial-gradient( ellipse,violet,blue); /* 由内向外 默认圆形 circle、椭圆 ellipse*/ /* 背景图默认不占内边距 */ background-origin: content-box; /* 默认背景图占内边距 */ background-origin: padding-box; /* 背景图占边框 */ background-origin: border-box; /* 背景色默认占边框和内边距 */ background-clip: content-box; background-clip: padding-box; background-clip: border-box;
3.2 过渡
/* 过渡属性名 */ transition-property: background-color; /* 过渡周期 */ transition-duration: 0.5s; /* 过度延迟 */ transition-delay: 1ms; /* 过渡时间曲线 */ transition-timing-function: linear; /* 过渡总写 属性、周期、延迟、时间曲线 */ transition: background-color,0.5s,1ms,linear; /* 兼容浏览器 */ -webkit-transition: ; -moz-transition: ; -o-transition: ; -ms-transition: ;
4. 转换
/* 定位的层叠属性 z-index: 默认为零 大的在上边 */ z-index: 1;
4.1 旋转
/* 设置中心 */ transform-origin: left top; /* 旋转 rotate(度数deg): 默认顺时针,负逆时针、以盒子正中心旋转 */ transform: rotate(-30deg);
4.2 平移
/* 平移:水平,垂直 */ transform: translate(80px,-30px);
4.3 缩放和拉伸
/* 缩放拉伸: 倍数*/ transform: scale(0.8,0.7);
4.4 扭曲
/* 扭曲:水平、垂直 */ transform: skew(30deg,0);
5. 动画
5.1 创建
/* 动画属性 animation */ /* 创建 */ /* 动画名属性 */ animation-name: firstAnimation; /* 动画周期 */ animation-duration: 5s; /* 动画延迟 */ animation-delay: 0; /* 动画时间曲线 匀速 linner、默认 慢快慢过渡 ease*/ animation-timing-function: linear; /* 动画次数 无穷 infinite*/ animation-iteration-count: infinite; /* 动画暂停 默认running*/ animation-play-state: paused; /* 综合设置 */ animation: firstAnimation 4s linear infinite;
5.2 设置
@keyframes firstAnimation { /* 开始 */ from { background-color: turquoise; } /* 结束 */ to { background-color: blue; border-radius: 50%; } /* 百分比 */ 0% { background-color: turquoise; transform: rotate(0deg); } 100% { background-color: hotpink; transform: rotate(180deg); } }
5.3 浏览器兼容
- -moz代表firefox浏览器私有属性
- -ms代表IE浏览器私有属性
- -webkit代表chrome、safari私有属性
- -o代表opera私有属性
6. 弹性容器
/* 当子元素宽度和大于父元素时,不会超出父元素,子元素宽度弹性变小*/ display: flex; /* 容器主轴排列方向 从左到右 row、从右到左 row-reverse*/ /* 从上到下 column、从下到上 column-reverse*/ flex-direction: row; /* 设置主轴是否换行 换行 wrap、不换行 nowrap、换行反转 wrap-reverse */ flex-wrap: wrap; /* flex-direction、flex-wrap的简写*/ flex-flow: row wrap; /* 主轴对齐方式 flex-start 左对齐、flex-end 右对齐*/ justify-content: space-between; /* 在交叉轴(主轴的垂直方向)上对齐方式 */ align-items: center;
7. 响应式布局
7.1 viewport
响应式布局:根据不同的设备展示不一样的网页布局
viewport:可视区域。
7.2 响应式布局案例
网格视图
首先确保所有的 HTML 元素都有 box-sizing 属性且设置为 border-box。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> * { box-sizing: border-box; } header { background-color: purple; padding: 35px 10px; color: #fff; font-size: 30px; } [class^="col-"] { float: left; padding: 10px; } .col-1 { width: 8.33%; } .col-2 { width: 16.66%; } .col-3 { width: 25%; } .col-4 { width: 33.33%; } .col-5 { width: 41.66%; } .col-6 { width: 50%; } .col-7 { width: 58.33%; } .col-8 { width: 66.66%; } .col-9 { width: 75%; } .col-10 { width: 83.33%; } .col-11 { width: 91.66%; } .col-12 { width: 100%; } .row ul { list-style: none; padding: 0; } .row ul>li { background-color: #33b5e5; margin-bottom: 20px; padding: 15px; color: #fff; } .row ul>li:hover { background-color: rgba(0, 0, 0, 0.3); } </style> </head> <body> <header>Chania</header> <div class="row"> <div class="col-3"> <ul> <li>The Flight</li> <li>The City</li> <li>The Island</li> <li>The Food</li> </ul> </div> <div class="col-9"> <h1>The City</h1> <p>Chania is the capital of the Chania region on the island of Crete. The city can be divided in two parts, the old town and the modern city.</p> <p>Resize the browser window to see how the content respond to the resizing.</p> </div> </div> </body> </html>
7.3 媒体查询
/* 使用 @media 查询来制作响应式设计 */ /* @media only screen and (media feature) { } */ @media only screen and (max-width:700px) and (min-width:400px) { /* 屏幕的宽度0到500px的样式 */ body { background-color: blue; }
8. less
Less 是一门 CSS 预处理语言,它扩展了 CSS 语言,增加了变量、Mixin、函数等特性,使 CSS 更易维护和扩展。
使用less前需要先安装node.js,然后通过cnpm安装less。cnpm install -g less
以通过三种方法实现less的编译工作
8.1 在本地node环境下实现
- 创建一个less文件,类似于这样
@size: 200px; @sizeHeight: 100px; @bgcolor1: red; @bgcolor2: blue; @fontsize: 30px; h1 { width: @size; height: @sizeHeight; background-color: @bgcolor1; } h3 { width: @bgcolor1; height: @size; background-color: @bgcolor2; font-size: @fontsize; }
- 将预处理less文件编译成css文件
lessc style.less style.css
- 引入style.css
8.2 在浏览器环境下实现
- 引入less.css文件
<link rel="stylesheet/less" href="css/style.less">
- 第二步:引入less.js文件
<script src="js/less.js"></script>
js文件如下
- vscode安装live server插件,在服务器中打开
8.3 vscode插件自动编译
- vscode安装Easy LESS插件
- 配置settings.json文件 (文件 - 首选项 - 设置 - 搜索设置settings.json)
加入如下代码
{ //settings.json "less.compile": { "out": "${workspaceRoot}\\css\\" } }
${workspaceRoot} 代表当前项目的根目录,后面路径自行配置
保存后会自动在项目根目录下的css文件夹下编译生成style.css