【前端】之CSS3基础知识
CSS3 私有化前缀
- 考虑到CSS3的兼容性问题,某些属性需要添加浏览器的私有化前缀
- 几种主流浏览器的私有化前缀如下:
- Chrome、Safari:-webkit-
- Firefox:-moz-
- IE:-ms-
- Opera:-o-
CSS3 之前已有的选择器
- div{}:标签选择器
- .box{}:类选择器
- #box{}:ID选择器
- div:hover{}:伪类选择器
- div p{}:后代选择器
- div.box{}:交集选择器
- div,p{}:并集选择器
- *{}:通配符选择器
CSS3 属性选择器
- 属性选择器通过标签属性来选择
- 属性选择器用“[ ]”来表示,将属性放到“[ ]”中进行筛选,示例代码如下:
div[class]{} /*匹配有class属性的div标签*/
div[class="box1"]{} /*匹配class属性为box1的div标签*/
div[class^="aa"]{} /*匹配class属性值以aa开头的div标签*/
div[class$="aa"]{} /*匹配class属性值以aa结尾的div标签*/
div[class*="aa"]{} /*匹配class属性值中包含aa的div标签*/
CSS3 伪类选择器
- CSS3之前的伪类::hover鼠标悬浮、:link未访问、:active被选择、:visited已访问
- 上述伪类的顺序:link -> visited -> hover -> active(love hate)
- 伪类:表示元素在某个状态下的样式,标志性符号是
:
- 结构伪类:
- N:first-child:符合N条件的第一个元素所在父容器的第一个子孩子
- N:last-child:符合N条件的第一个元素所在父容器的最后一个子孩子
- N:nth-child(10):符合N条件的第一个元素所在的父容器的第10个子孩子
- N:nth-child(odd):符合N条件的第一个元素所在的父容器中的奇数子孩子
- N:nth-child(2n+1):同上
- N:nth-child(even):符合N条件的第一个元素所在的父容器中的偶数子孩子
- N:nth-child(2n):同上
- N:nth-child(n):符合N条件的第一个元素所在的父容器中的所有子孩子
- N:nth-child(-n+5):符合N条件的第一个元素所在的父容器中的前5个子孩子
- N:nth-child(5-n):符合N条件的第一个元素所在的父容器中的后5个子孩子
- N:nth-last-child(-n+5):符合N条件的第一个元素所在的父容器中的后5个子孩子
- 状态伪类:
- N:empty:符合N条件且内部没有内容的元素(空格也算内容)
- target伪类:
- N:target:当符合N条件的元素被锚点聚焦后的样式,需要配合锚点使用
CSS3 伪元素选择器
- 伪元素:通过CSS模拟HTML,标志性符号是
::
- 常见的伪元素:
- E::before:在E标签之前添加文本及其样式样式,必须要有
content
属性 - E::after:在E标签之后添加文本及其样式,必须要有
content
属性 - E::first-letter:E元素中的第一个字符的样式
- E::first-line:E元素中的第一行的样式
- E::selection:选中文本后的样式
- E::before:在E标签之前添加文本及其样式样式,必须要有
CSS3 透明度设置方式
- RGBA设置方式:
- R:Red,红色,0-255
- G:Green,绿色,0-255
- B:Blue,蓝色,0-255
- A:Alpha,透明度,0.0-1.0
- HSLA设置方式:
- H:Hue,色调,0-360
- S:Saturation,饱和度,0%-100%
- L:Lightness,亮度,0%-100%
- A:Alpha,透明度,0.0-1.0
CSS3 文本
- text-shadow:文本阴影,示例代码:
/* text-shadow: 水平位移 垂直位移 模糊程度 阴影颜色 */
/* 如果要设置多个阴影,可以在中间加逗号隔开 */
text-shadow:-1px -1px 1px #fff, 1px 1px 1px #000; /* 凸效果 */
text-shadow:-1px -1px 1px #000, 1px 1px 1px #fff; /* 凹效果 */
CSS3 边框
- border-radius:圆角
- box-shadow:边框阴影,参数(水平位移 垂直位移 模糊度 面积 颜色)
- border-image:边框图片,包括四个子属性
- border-image-source:边框图片路径,
:url('images/border.png')
- border-image-slice:四个角不被拉伸的部分的宽度,没有单位,
:27
- border-image-width:边框图片的宽度,
:27px
- border-image-repeat:重复模式,
:repeat平铺,中间部分可能显示不完整
,:round完美平铺,中间部分显示完整
,:stretch拉伸
- border-image-source:边框图片路径,
- box-sizing:盒子的显示模型,有三种值:
- content-box:默认值,外加模型,盒子实际大小仅包括内容区域
- padding-box:盒子实际大小包括padding及其内部区域
- border-box:内减模型,盒子实际大小包括边框及其内部区域
CSS3 背景
- background-size:背景大小,几种参数写法如下:
- 尺寸,
100px 100px
,按给定数值显示背景 - 百分比,
100% 100%
,按给定百分比显示背景 - cover,等比例缩放,让背景的短边铺满容器,长边可能会溢出容器
- contain,等比例缩放,让背景的场边铺满容器,短边可能铺不满容器
- 尺寸,
- background-origin:背景原点,控制背景的显示位置,默认值
padding-box
- background-clip:背景裁剪,将某个box外的背景区域裁剪掉
- 如果想给一个元素设置多张背景图片,背景图片之间要用逗号隔开
- 背景渐变:
- 线性渐变,代码如下:
background: linear-gradient(to right, yellow, green);
/* 从左向右,起始色为黄色,结束色为绿色 */
/* 方向:to left、to right、to top、to bottom,默认是to bottom */
/* 方向可以替换为角度:45deg,下边为0deg,左边90deg,依此类推 */
/* 可以设置多个颜色,且可以设置每个颜色占的比例:red 20%, blue 40% */
- 发散渐变,代码如下:
background: radial-gradient(100px, at center, yellow, green);
/* 第一个参数:辐射半径 */
/* 第二个参数:中心点位置,at left/right/top/bottom/center/left top... */
/* 中心点位置可以直接设置坐标:at 50px 50px,左上角是(0,0) */
/* 其他参数及其特征和线性渐变中的相同 */
- 线性渐变,代码如下:
CSS3 过渡
- 如果不设置过渡,那么所有的变换都是突变的
- 过渡语法:
transition: 属性名 过渡时间
,示例代码如下:.box {
width: 200px;
height: 200px;
background-color: red;
transition: all 1s linear 3s;
/* transition: width 1s linear 3s, height 1s linear 3s, ... */
/* 第三个参数:默认值ease平滑过渡,linear匀速,ease-in由慢到快,ease-out由快到慢,ease-in-out慢快慢,steps(N)分N步走完 */
/* 第四个参数:延迟3秒钟后才开始过渡 */
/* 如果需要所有属性都过渡,则第一个参数直接写all */
}
.box:hover {
width: 600px;
height: 400px;
background-color: blue;
}
CSS3 2D变换
- 2D变换,就是对元素进行缩放、旋转、平移等操作
- 平移:从元素当前位置,在X、Y坐标上分别移动指定距离,代码如下:
transform: translate(100px, 200px); /* 向下、向右移动100像素 */
- 旋转:以元素中心点为圆心,顺时针旋转指定角度(单位deg),代码如下:
transform: rotate(45deg); /* 顺时针旋转了45度 */
- 缩放:将元素在X轴和Y轴上分别缩放指定倍数,代码如下:
transform: scale(2, 4); /* 在X轴上放大2倍,Y轴上放大4倍 */
- 倾斜:将元素在X轴和Y轴上倾斜指定的角度,代码如下:
transform: skew(30deg, 30deg); /* 在X轴和Y轴上分别倾斜30度 */
- 在CSS3 2D变换中,可以设置变换的中心点,代码如下:
transform-origin: center bottom; /* 以下边的中心点为变换中心 */
CSS3 3D变换
- 在CSS3 3D变换中,有三个坐标轴:X轴、Y轴、Z轴
- 水平向右是X轴正方向;垂直向下是Y轴正方向;指向屏幕外是Z轴正方向
- perspective:透视,可以加强3D效果,代码如下:
perspective: 250px; /* 模拟人眼距离平面的距离,越近3D效果越强 */
- 在某个轴上旋转:rotateX/Y/Z,代码如下:
transform: rotateX(360deg); /* 在X轴上旋转360度 */
/* 在Z轴上的旋转相当于平面旋转rotate(360deg) */
- 在某个轴上移动:translateX/Y/Z,代码如下:
transform: translateX(200px); /* 在X轴上移动200像素 */
/* 在Z轴上的移动是前后移动,视觉效果是放大和缩小,但必须配合透视使用 */
- 上述所有”3D变换“都只是视觉效果,实际还是平面的
- 为了实现真正的3D,需要在父盒子中添加设置代码,代码如下:
tranform-style: preserve-3d; /* 子盒子保持3D效果 */
CSS3 动画
- CSS3中动画的使用方式,代码如下:
/* 定义动画 */
@keyframes move {
0% { transform: translateX(0px); } /* 动画运行到0%时的状态 */
100% { transform: translateX(300px); } /* 动画运行到100%时的状态 */
}
/* 调用动画 */
.box {
animation: move 2s infinite alternate linear 1s;
/* 第一个参数:动画的名称;第二个参数:运行一次的持续时间; */
/* 第三个参数:重复次数,infinite是无限重复; */
/* 第四个参数:动画轮流反向播放;第五个参数:匀速播放;第六个参数:延迟1秒 */
}
- 要想让动画结束后,盒子保持在动画最后的状态,可以添加如下代码:
animation-fill-mode: forwards;
/* 这个属性有两个值:forwards保持动画后的状态;backwards回到动画钱的状态 */
CSS3 分列布局
- CSS3中分列的基本用法:
-webkit-column-count: 3; /* 分成3列 */
-webkit-column-rule: 1px dashed red; /* 列与列之间有一条红色虚线隔开 */
-webkit-column-gap: 60px; /* 列与列之间间距60像素 */
- 分页后,标题会在某一列中。如果想要让标题在网页内居中,则应添加如下代码:
h4 {
-webkit-column-span: all;
text-align: center;
}
CSS3 伸缩布局
- FLEX布局完整教程
- CSS3中的伸缩布局使页面能够适配不同尺寸的屏幕,在响应式开发中发挥了巨大的作用
- 设置当前盒子使用伸缩布局:
E { display: flex; }
- 伸缩布局中的术语:
- 主轴:元素默认沿着主轴排列,默认主轴是水平轴,方向从左向右
- 侧轴:与主轴垂直的轴称为侧轴,默认是垂直方向的,方向从上到下
- flex属性:设置子元素占据父元素的空间,可以实现空间平分
- flex-direction属性:设置主轴方向,常用的值有以下四个:
- row:水平方向,从左向右排列
- row-reverse:反转行,从右向左排列
- column:垂直方向,从上向下排列
- column-reverse:反转列,从下向上排列
- justify-content属性:主轴上的对齐方式,常用的值有以下5个:
- flex-start:沿着主轴的方向对齐
- flex-end:沿着主轴的反方向对齐
- center:沿着主轴方向居中对齐
- space-between:两端对齐,子元素之间的间隔相等
- space-around:每个子元素两侧的间隔相等,子元素之间的间隔比子元素与边框的间隔大一倍
- align-items属性:侧轴上的对齐方式,常用的值有以下5个:
- flex-start:沿着侧轴的方向对齐
- flex-end:沿着侧轴的反方向对齐
- center:沿着侧轴方向居中对齐
- baseline:所有子元素的第一行文本基线对齐
- stretch:如果项目未设置高度或设为auto,将占满整个容器的高度
CSS3 WEB字体
- 开发人员可以在网页中设置特殊的字体,无需考虑用户机上是否安装了该字体
- 这种方式兼容性很好,甚至IE低版本浏览器也可以支持
- 常见字体格式:.ttf、.otf、.woff、.eot、.svg
- 不同字体格式支持不同的浏览器,我们需要为不同浏览器准备不同的字体格式
- 几个字体下载网站:字体下载网站 1、字体下载网站 2
- WEB字体配置步骤:
- 在这个网站中下载一种字体
- 在项目中新建一个
font
文件夹,将下载解压后的字体文件复制进去 - 在网页中声明字体:参照解压出来的
demo.html
文件 - 定义使用webfont的样式:参照解压出来的
demo.html
文件 - 在网页中添加文本,为文本设置样式即可
【前端】之CSS3基础知识的更多相关文章
- CSS3 基础知识
CSS3 基础知识1.边框 1.1 圆角 border-radius:5px 0 0 5px; 1.2 阴影 box-shadow:2px 3px 4px 5px rgba(0,0,0 ...
- CSS3 基础知识[转载minsong的博客]
CSS3 基础知识1.边框 1.1 圆角 border-radius:5px 0 0 5px; 1.2 阴影 box-shadow:2px 3px 4px 5px rgba(0,0,0 ...
- CSS3基础知识
CSS3基础 1 样式表的使用 1.内联样式表. 只影响单个元素,常用于标签. <p style="color: aqua;font-size: 20px">This ...
- 初学者入门web前端:C#基础知识:函数
入行前端对函数的掌握程度有可能直接影响以后工作的效率,使用函数可以高效的编写编码,节省时间,所以我整理了C#中最基础的函数知识点,虽然我在学习中 遇到很多问题,但是只要能够解决这些问题,都是好的. 一 ...
- web前端篇:html基础知识
目录 1.web前端: 2.HTML概述 2.1HTML介绍 2.2HTML在计算机中如何表现 3.HTML基础语法 4.练习题: 1.web前端: 什么是web? web 就是网页,是一种基于B/S ...
- 前端学习——css基础知识,选择器与html模板、值得收藏的html标签
一.css需要的html(采用html5标准) DTD,文档类型声明: <!Doctype html> 文本编码声明: <meta charset="utf-8" ...
- css3基础知识——回顾
1.属性选择器 完全匹配的属性选择器 [id=article]{} 示例: <style> input[type=text]{ border: 2px solid red;} </s ...
- 谷哥的小弟学前端(11)——JavaScript基础知识(2)
探索Android软键盘的疑难杂症 深入探讨Android异步精髓Handler 具体解释Android主流框架不可或缺的基石 站在源代码的肩膀上全解Scroller工作机制 Android多分辨率适 ...
- 前端开发之基础知识-HTML(二)
1.6 html链接 html链接 <a>标签可以在网页上定义一个链接地址,通过src属性定义跳转的地址,通过title属性定义鼠标悬停时弹出的提示文字框. <a href=&quo ...
随机推荐
- 2018.8.20 Python之路---常用模块
一.re模块 查找: re.findall(‘正则表达式’,‘字符串’) 匹配所有符合正则表达式的内容,形成一个列表,每一项都是列表中的一个元素. ret = re.findall('\d+','sj ...
- Java 基本数据类型的取值范围
基本数据类型,字节数,位数,最大值和最小值. 1. 基本类型:short 二进制位数:16 包装类:java.lang.Short 最小值:Short.MIN_VALUE=-32768 (-2的15此 ...
- Angular工作笔记(2018/8/8)
需求1:input标签只允许输入数字且不会出现上下选择按钮 开始设置 type="number" 客户不想要出现上下选择按钮 解决方法: 但是这种写法会有一个限制,只能输入整数,无 ...
- 前端技术之:JS开发几个有意思的东东
一. 查看性能分析报告 npm run build:prod --report 二.vue ui工具 三.vue-element-admin https://panjiachen.gite ...
- 转:NFS原理详解
原文:http://atong.blog.51cto.com/2393905/1343950 一.NFS介绍 1)什么是NFS 它的主要功能是通过网络让不同的机器系统之间可以彼此共享文件和目录.NFS ...
- N42-qq-林友埙-第二周作业
1.Linux发行版的系统目录名称命名规则及用途 2.文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息 1.文件的元数据是指文件的属性.大小.创建时间.访问时间.属主属组等 ...
- vim编辑器介绍
所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在. 但是目前我们使用比较多的是 vim 编辑器. vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正 ...
- 最新JetBrainsPyCharm自动部署Python(Django,tornado等)项目至远程服务器
每次开发Python项目时,对于所有Python开发人员来说,最枯燥的不是修改代码,而是实时将自己的代码上传至远程服务器,进行测试或者部署,本人最初开发也是这样,通过使用Xshell 5,WinSCP ...
- Linux 常用命令 | free 详解
free命令可以显示Linux系统中空闲的.已用的物理内存及swap内存,及被内核使用的buffer.在Linux系统监控的工具中,free命令是最经常使用的命令之一.本文介绍free命令的使用方法和 ...
- Keras 中间层可视化,附代码详解,以Mnist数字为对象
最近搭建了个Resnet50 的神经网络模型,相看一看中间某一层的输出结果,想感性的感受下逐层提取特征的过程,以数字0为对象,对数字0逐层提取特征,话不多说直接上代码,关于如何搭建Resnet,可以参 ...