css学习总结

CSS3学习(因为是早之前写的了,现在才发表,所以有些地方不记得了找个机会再过一下)

curser:poimter 鼠标手型

一、选择器

  • :first-of-type() 选择该类型元素的第一个元素
  • :last-of-type() 选择该类型元素的最后一个元素
  • :nth-of-type()从正序开始选择该类型的第几个元素
  • :nth-last-of-type()从倒序开始选择该类型元素的第几个元素
  • :first-child
  • :last-child
  • :nth-child
  • nth-last-child
  • ::selection选择用户鼠标选中的部分
  • :not选中非用户选指定的选择器
  • :root 根节点选器
  • :enable 选择状态可用的元素(input button)
  • :disable选择状态不可用的元素(input button)
  • :checked 选择选中状态下的input标签
  • [attr=“value”] 属性选择器
  • target选择器 选择当前活动的id锚点
    • target的使用要配合a标签和元素的id属性
    • a标签是一个链接,通过a标签,我们不但跳转到其他页面还可以跳转到一个页面的某一个id锚点,换句话说,一个a标签可以激活其链接对应的id锚点,target选择器选择的就是当前活动的这一个id

二、CSS3转换和过度

(一)、转换
  1. CSS3的转化可以分为2d转化和3d转换
  2. 2d转换有5种转换方式,分别是:
    1. translate() 根据左(x轴)和顶部(y轴)位置给定的参数从当前元素位置移动
    2. rotate() 在一个给定度数顺时针旋转的元素,负值标识逆时针旋转
    3. scale() 该元素增加或减少的大小,取决宽度(x轴)和高度(y轴)的参数
    4. skew() 包含两个参数,分别标识x轴和y轴的倾斜的角度,如果第二个参数为空,则默认为0,参数为负表示相反方向倾斜
    5. matrix() 将前面四个方法合为一个,用矩阵来表示2d转换
      • 其中matrix()会用到矩阵相关的知识,其他也可以满足
      • transform-origin()用来控制转换原点。默认值是(50%,50%)
      • 除了使用固定值和百分比,你也可以用bottom,top,center,left,right来控制原点。
      • 3d转换和2d转换原理一样,只是在x,y轴的基础上增加了z轴的转换。
(二)、过度
  1. CSS3过度是元素从一种样式改变为另一种样式的效果,transition有四个过渡属性,他们分别是:
    1. transition-property 规定应用过渡的CSS属性的名称(瞬间变化的属性是不能设置过渡,比如display)
    2. transition-duration(必须) 定义过渡效果花费的时间,默认是0。
    3. transition-timing-function 规定过渡效果的时间曲线默认是“ease”
      • linear 相同时间
      • ease 慢速开始变快再变慢
      • ease-in 慢速开始
      • ease-out 慢速结束
      • ease-in-out 慢速开始和慢速结束
      • cubic-bezier(n,n,n,n) 自己定义,可以是0-1之间的值
    4. transition-delay 何时开始
  •   简写形式:transition: width 1s linear 2s(延时)
    

三、鼠标选择器

  1. :hover
  2. +为css2选择器 element + element2选择器匹配出现在element后面的临近的element2
  3. ~为css3选择器 element ~ element 选择器匹配出现在element后面的element

四、圆角

  1. border-radius:50px; 表示四个角的圆角半径都是50px
  2. border-radius:50px 40px;表示左上角与右下角50px,右上角与左下角40px
  3. border-radius: 左上角 右上角和左下角 右下角
  4. border-radius:左上角 右上角 右下角 左下角
  • border-radius可以使用固定单位和 百分比单位
  • 不同属性的百分比值相对的内容是不一样的,如translate是自身,width/height是父级,而border-radius的百分比包含border和padding部分
  • border-radius有大值特性,也就是值很大的时候,只会使用能后渲染的圆角大小渲染(超过直径径大小则使用直径)
  • border-radius的全写形式有八个值,同事包含水平半径和垂直半径
  • border-radius: 水左上 水右上 水右下 水左下 / 垂左上 垂右上 垂右下 垂左下

单角圆角

  • border-top-left-radius
  • border-top-right-radius
  • border-bottom-right-radius
  • border-bottom-left-radius
  • 属性也可以有两个。。。。。。:水平 垂直

五、动画

  1. 在css3中利用@keyframes创建动画
    • @keyframes规则指定一个CSS样式和动画逐步从目前样式更改为新的样式
    • @keyframes 名字{from{样式} to{样式}}
    • @keyframes 名字{0%{} 20%{} 40%{}。。。}
  2. 需要把创建好的动画绑定到一个选择器
    • animation-name:name(动画名);
    • animation-duration:2s;
    • 必须定义名字和时间(默认是0)
    • animation-timing-function: 动画的速度曲线
    • animation-delay: 何时开始
    • animation-iteration: 播放的次数默认是1,infinite无限播放
    • animation-direction: 是否在下一周期逆向播放;默认时normal
    • reverse方向
    • alternate正反播放
    • alternate_reverse 反正播放
    • animation-play-state: 是否正在运行或暂停 默认是running
    • anmiation: name 5s 1s infinite linear alternate

六、阴影

  1. box-shadow有六个参数
    • box-shadow: offset-x offset-y blur(模糊半径) spread(阴影大小) color position(内或外)
  • blur越大越模糊
  • 单边阴影:只设置x或y轴
  • 双边阴影:同时设置x和y轴
  • 三边阴影:设置spread,x和y只设置一个
  • 全阴影:x和y都不设置
  • 多阴影:一个box-shadow包含多个参数,不同参数用“,”隔开

七、伪元素

  1. 伪元素是不会出现在DOM中,不会改变文档的内容,仅仅是在css渲染层加入不可复制的特殊元素
  2. 常见的伪元素有:
    • ::first-letter ::first-line ::bofore ::after ::selection
    • before和after用于添加的内容
  • 必须包含content属性,至少要保证一个空字符,默认是行内元素
  • 可以添加的内容有string、attr()、url()
  • 用于去除浮动
    • 去除浮动的方法有多种,现在最常用的 就是利用after伪类来清除浮动
    • content:“”;display:block;clear:both;
    • 原选择器上加:zoom:1 用来解决ie兼容性问题
  • 用于绘制各种形状

八、渐变

(一)渐变
  1. css3渐变是网页中的一项技术,他能在两个或多个指定得颜色之间,显示平稳的过度效果。
  2. 以前实现类似的效果需要借助图片,css3渐变技术对比图片有如下优势:
    • css3渐变技术可以减少带宽的使用,因为不用再去请求服务器上的图片。
    • 除矢量图以外的图片放大之后会失真,css3渐变效果不会失真,因为他是有浏览器生成的。
  3. css3渐变分为线性渐变和径向渐变。
  4. 之前基本上没有考虑浏览器的兼容性问题。但虽然css3渐变的浏览器支持情况不太好,但同时他也比较重要。
  5. 常见的浏览器内核有四种:
    • Trident: IE,The World,搜狗,360 -ms-
    • Gecko: Netscape6+,Fire Fox,SeaMonkey -moz-
    • Presto: opera7+ (原内核:Presto,现内核:Blink) -o-
    • Webkit: Safari,Chrome -webkit-
  6. 创建一个线性渐变至少定义两种颜色节点。颜色节点即你想要呈现平稳过渡的颜色。在设置颜色节点的同时,也可以设置渐变方向和渐变角度。
  • 最基本的方式只设置两个颜色节点。
  • background: linear-gradient(direction,color-stop1,color-stop2,…)
  1. 设置对角线渐变:
    • (left top,red,blue);
    • (180deg,red,blue);
      • 0deg将创建一个从下到上的渐变,90deg将创建一个从左到右的渐变。部分老浏览器使用了旧的标准,是反过来的。
    • 颜色可以用有透明度的
(二)、径向渐变
  1. 为了创建一个径向渐变,你也必须至少两种颜色节点。颜色节点即你想要呈现平稳过渡的颜色,同时,你也可以指定渐变的中心、形状(原型或椭圆形)、大小。默认情况下,渐变的中心是center(表示在中心点),渐变的形状是ellipse(表示椭圆形)渐变的大小是farthest-corner(表示到最远的角落)。
  2. 语法:background:radial-gradient(center,shap size(形状,大小),start-color,。。。,last-color)
  3. 如果我们想指定渐变的形状是一个原型,可以使用circle关键字。
  4. 可以通过at指定渐变起始位置,可以使用百分比。
    • (circle at 50px 50px,yellow,red)
  5. radial-gradient径向渐变支持4个关键字指定渐变终止点位置:
    • closest-side 渐变中心距离容器最近的变作为终止位置。
    • closest-corner 渐变中心距离容器最近的角作为终止位置。
    • farthest-side 渐变中心距离容器最远的点作为终止位置。
    • farthest-corner(默认值) 渐变中心距离容器最远的角作为终止位置。
    • 指定渐变颜色的断点。在颜色后面加上百分比指定到什么时候
    • 椭圆类型的径向渐变
    • 对于圆形截面,我们只需指定一个半径就可以了,但是对于椭圆类型的径向渐变,我们需要同时指定横轴和纵轴的长度
    • (50px 100px ellipse,transparent 40px,red)
  6. 可重复渐变
    • repeating-linear-gradient(red,yellow 10%,green 20%);用于重复线性渐变。
    • reapeating-radial-gradient()用于重复径向渐变。
  7. 可以设置多组值

九、多列

  1. css3多列属性如下:
    • column-count 指定元素应该被分割的列数
    • column-fill 指定如何填充列(仅火狐13.0+支持)
    • column-gap 指定列与列之间的间隙
    • column-rule 所有column-rule-* 属性的缩写
    • column-rule-color 指定两列间边框的颜色
    • column-rule-style 指定两列间边框的样式
    • column-rule-width 指定两列间边框的厚度
    • column-span 指定元素要跨越多少列(火狐不支持)
    • column-width 指定列的宽度
    • count 和 width 只能用一个

十、文本相关

  1. text-overflow属性指定当文本溢出包含他的元素,应该怎样显示,有三个可选值:
    • ellipsis:超出的文本隐藏,同时显示省略号。
    • clip:超出的文本被直接截断
    • 其他字符串:超出的文本显示设置的字符串(仅火狐可用)
  • 注意:一般配合 white-space:nowrap使用
  1. text-shadow 属性应用于阴影文本
    • 语法 text-shadow:x,y,blur(模糊的半径) color;
  2. text-stroke 为文字添加描边效果,可以理解为文字添加边框
    • text-stroke:宽度值 颜色值
    • text-stroke是一个复合属性,由text-stroke-width和text-stroke-color两个子属性组成
    • 要考虑浏览器内核
  3. word-break 自己决定自动换行的处理方法
    • normal 使用浏览器默认的换行规则
    • keep-all 只能在空格或连接字符处换行
    • break-all 允许在单词内换行
  • word-break属性使用break-all参数值时,对于西方文字来说,允许在单词内换行。对于标点符号来说,当word-break属性使用break-all参数值时,在safari和chrome中,允许标点符号位于行首,IE中仍然不允许标点符号位于行首。
  1. word-wrap 允许长的内容可以自动换行
    • normal 只在允许的断字点换行(浏览器保持默认处理)。
    • break-word 在长单词或url地址内部进行换行。

十一、css特殊用法

  1. a标签+:target伪类
    • 可以制作单屏的选项卡
  2. label-input 制作按钮选项卡
<input type="checkbox" id="input1">
	
<label class="btn" for="input1"></label>
  • 利用before,after制作按钮
#input:checked~.btn{

box-shadow:0 2px 5px 0px gray,0 15px 20px 0 transparent;

}

#input:checked~.btn::before{

...

}

#input:checked~.btn::after{

...

}

十二、弹性盒子

  1. 布局的传统解决方案,基于盒状模型,依赖display属性+position属性+float属性。他对于那些特殊布局非常不方便,比如垂直居中就不容易实现。
  2. 2009年w3c提出了一种新的方案–flex布局,可以简单、完整、响应式地实现各种页面布局。弹性盒子在移动端的应用非常广泛,在pc端,抛开老古董浏览器,现代主流浏览器都能完美支持!
  3. Flex是Flexible Box的缩写,意为弹性布局,用来为盒状模型提供最大的灵活性,任何一个容器都可以指定为Flex布局,块级元素要利用弹性盒子,只需要设置display:flex;行内元素也能使用,需要设置display:inline-flex;
  4. 采用Flex布局的元素,称为Flex容器(flex container),简称容器。他的所有子元素自动成为容器成员,称为Flex项目(flex item),简称项目
  5. Flexbox通常能让我们更好的操作他的子元素布局,例如:
    • 如果元素容器没有足够的空间,我们无需计算每个元素的宽度,就可以设置他们在同一行;可以快速让他们布局在一列;可以方便让他们对其容器的左右中间等;无需修改结构就可以改变他们的显示顺序;如果元素容器设置百分比和视窗大小改变,不用提心未指定元素的确切宽度而破坏布局,因为容器中的每个子元素都可以自动分配容器的宽度或高度的比例
  6. 弹性盒子有很多可用属性。大多数属性都是容器属性,即直接作用于flex容器,少部分作用于flex项目
    • 容器属性display
      • display:flex|inline-flex;
      • flex-direction:row|row-reverse|column|column-reverse(倒序)指定主轴方向
    • justify-content:flex-start(沿正方向排列)|flex-end(反方向)|center(居中)|space-between(两两元素之间有间隔的排列)|space-around(每个元素两边都有间隔的排列方式)
    • flex-wrap:在一排或是一列排不下来时是否允许换行/列
    • normal(默认值)单行
    • wrap多行显示
    • wrap-reverse 多行,但排列顺序相反
    • align-items交叉轴的对其方式,类似justify-content属性
      • flex-start交叉轴的起点对齐
      • flex-end交叉轴的终点对齐
      • center中点对齐
      • baseline项目的第一行文字的基线对齐
      • stretch(默认值)如果项目未设置高度或设为auto,将沾满整个容器的高度
    • align-content多根轴线的对其方式,如果项目只有一根轴线,该属性不起作用
      • flex-start与交叉轴的起点对其
      • flex-end与交叉轴的终点对齐
      • center与交叉轴的中心对齐
      • space-between与交叉轴两端对齐,轴线之间的间隔平均分布
      • space-around每根轴线两侧的间隔都相等,所以轴线之间的间隔比轴线与边距的间隔大一倍
    • 项目属性align-self 允许单个项目有与其他项目不一样的对其方式,可覆盖align-items属性
      • 可能取六个值除了auto外和align-items一样
    • order(项目属性)定义项目的排列顺序。数值越小越靠前,默认为0;
  • 16
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值