块:默认宽度100%,可以设置长度高度
行内块:可以设置长度高度,默认跟文字同长
行内元素:不能设置长度高度,跟文字同长
浮动,绝对定位,固定定位可以转换为行内块,所以本身要加这些语句就不用写 display:block,就可以直接 给宽度高度
设置浮动时,框框就不占位置了,但是里面东西如文字图片还会占位置,其他框框就会顶上位置,但是就会被文字或图片挤开。
clear:left 设置了这个属性的框框左边就不允许存在浮动元素,所以如果存在,这个框框会下移。
{
position:absolute;
height:1
}
高度塌陷:父元素包含了子元素,并且父元素没有设置高度,是被子元素撑开的,如果子元素脱离文档流,那么父元素高度就会塌陷为零,
解决方法:
BFC:Block Formatting Context "块级格式化上下文"
-- 开启BFC的时候的特性
-- BFC的开启方法
解决外边距重叠办法
注:对于父子垂直外边距重叠解决方法:
父元素添加padding
父元素 overflow:hidden;
父元素透明边框 border:1px solid transparent;
父元素绝对定位 postion:absolute:
子元素 加float:left;或display:inline-block; 触发BFC(只有这两个属性可以通过子元素触发BFC防止塌陷)
下列中,孩子,lang是伪类选择,其余是伪元素
:link a:link 选择所有未访问链接
:visited a:visited 选择所有访问过的链接
:active a:active 选择正在活动链接
:hover a:hover 把鼠标放在链接上的状态
:focus input:focus 选择元素输入后具有焦点
:first-letter p:first-letter 选择每个<p> 元素的第一个字母
:first-line p:first-line 选择每个<p> 元素的第一行
:first-child p:first-child 选择器匹配含p的父元素的第一个子元素的是 <p> 的元素
:nth-child p:nth-child(2) 选择器匹配含p的父元素的第n个子元素的是 <p> 的元素
:before p:before 在每个<p>元素之前插入内容
:after p:after 在每个<p>元素之后插入内容
:lang(language) p:lang(it) 为<p>元素的lang属性选择一个开始值
其中,链接伪类是之前就有,孩子伪类,before,after是css3
css3中规定::表示伪类 ::表示伪元素
单选框的用法
<form>
//label可以设置内容与框绑定,name属性相同,用来单选
<input type="radio" id="aaa" name="name">
<label for="aaa">ada</label>
<input type="radio" id="bbb" name="name">
<label for="bbb">ada</label>
</form>
li+li:before{}:意思是给相邻的li之间加元素
如:在两个li之间添加一个斜杆
li+li:before {
padding: 8px;
color: black;
content: "/\00a0";
}
background: url(img_flwr.gif) right bottom no-repeat, url(paper.gif) left top repeat;
background-origin:border-box;
background-origin:padding-box;
background-origin:content-box;
在什么地方加背景,border:从边框开始 padding:从内边距开始 content:从内容开始
background-clip:border-box;
background-clip:padding-box;
background-origin:content-box;
默认从上到下渐变
background: linear-gradient(direction, color-stop1, color-stop2, ...);
如:
background: linear-gradient(to bottom right, red, yellow);
//10%表示红色占据的中心在左上开始的10%位置 后面40%指黄色中心位置,小于前面的会被覆盖
background: linear-gradient(to bottom right, red 10%, yellow 40%);
重复的线性渐变,以下可以表示20%以内渐变,重复5次
background: repeating-linear-gradient(red, yellow 10%, green 20%);
background: linear-gradient(angle, color-stop1, color-stop2);
如:
background: linear-gradient(-90deg, red, yellow);
background: linear-gradient(to right, rgba(255,0,0,0), rgba(255,0,0,1));
background: radial-gradient(shape size at position, start-color, ..., last-color);
如:指中心点在中上部,往外扩散,220%往左右,105往上下
background: radial-gradient(220% 105% at top center, #1b2947 10%, #75517d 40%, #e96f92 65%, #f7f7b6);
text-shadow
box-shadow
水平阴影,垂直阴影,模糊的距离,以及阴影的颜色:
text-shadow: 5px 5px 5px #FF0000;
box-shadow: 10px 10px 5px #888888;
text-overflow: clip|ellipsis|string; //修剪|用省略号代替多余|用字符串代替多余
transform属性,属性值如下:
可以进行3D变换
| 属性 | 描述 | CSS |
|---|---|---|
| transform | 向元素应用 2D 或 3D 转换。 | 3 |
| transform-origin | 允许你改变被转换元素的位置。 | 3 |
| transform-style | 规定被嵌套元素如何在 3D 空间中显示。 | 3 |
| perspective | 规定 3D 元素的透视效果。 | 3 |
| perspective-origin | 可以设置旋转轴 | 3 |
| backface-visibility | 定义元素在不面对屏幕时是否可见。 | 3 |
transition属性,有四个值。设定之后,要想有变化效果,如hover,就改变hover里的对应属性值即可
property:变化的值,如width。 duration:变化时间。 timing-function:变化方式。delay:延迟时间
transition: property duration timing-function delay;
可以通过过渡与3D转换做成动画
注意:transform属性是设置变换的属性。transition属性是用来设置过渡的,不要弄混
@keyframe规则:关键帧。@keyframes 规则内指定一个 CSS 样式和动画将逐步从目前的样式更改为新的样式。
使用方法
.name{
animation:名字A
}
//操作一步
@keyframe 名字A{
from{}
to{}
}
//操作几步
@keyframe 名字A{
0%{}
50%{}
100%{}
}
animation:animation: name duration timing-function delay iteration-count direction fill-mode play-state;
| animation-name | 指定要绑定到选择器的关键帧的名称 |
|---|---|
| animation-duration | 动画指定需要多少秒或毫秒完成 |
| animation-timing-function | 设置动画将如何完成一个周期 |
| animation-delay | 设置动画在启动前的延迟间隔。 |
| animation-iteration-count | 定义动画的播放次数。 |
| animation-direction | 指定是否应该轮流反向播放动画。 |
| animation-fill-mode | 规定当动画不播放时(当动画完成时,或当动画有一个延迟未开始播放时),要应用到元素的样式。 |
| animation-play-state | 指定动画是否正在运行或已暂停。 |
可以做了解
| 属性 | 描述 |
|---|---|
| column-count | 指定元素应该被分割的列数。 |
| column-fill | 指定如何填充列 |
| column-gap | 指定列与列之间的间隙 |
| column-rule | 所有 column-rule-* 属性的简写 |
| column-rule-color | 指定两列间边框的颜色 |
| column-rule-style | 指定两列间边框的样式 |
| column-rule-width | 指定两列间边框的厚度 |
| column-span | 指定元素要跨越多少列 |
| column-width | 指定列的宽度 |
| columns | 设置 column-width 和 column-count 的简写 |
resize:修改大小
| 值 | 描述 |
|---|---|
| none | 用户无法调整元素的尺寸。 |
| both | 用户可调整元素的高度和宽度。 |
| horizontal | 用户可调整元素的宽度。 |
| vertical | 用户可调整元素的高度。 |
box-sizing:以确切的方式定义某个区域的具体内容
不使用box-sizing,默认情况下,元素的宽度与高度计算方式如下:
width(宽) + padding(内边距) + border(边框) = 元素实际宽度
height(高) + padding(内边距) + border(边框) = 元素实际高度
CSS3的 box-sizing 属性在一个元素的 width 和 height 中包含 padding(内边距) 和 border(边框)。
即,如果设置width为300,那么不管内边距是多少,这个盒子内容+边距+border就是300
| 值 | 说明 |
|---|---|
| content-box | 这是 CSS2.1 指定的宽度和高度的行为。指定元素的宽度和高度(最小/最大属性)适用于box的宽度和高度。元素的填充和边框布局和绘制指定宽度和高度除外,即设定宽高时不包含边距与边框 |
| border-box | 指定宽度和高度(最小/最大属性)确定元素边框。也就是说,对元素指定宽度和高度包括了 padding 和 border 。通过从已设定的宽度和高度分别减去边框和内边距才能得到内容的宽度和高度。 |
outline-offset
outline:2px solid red:在border外加一个边框outline-offset:15px:设定那个边框的偏移量以上两句话操作的都是同一个边框,没有设置outline就不能设置outline-offset
以下是css3新增的用户界面属性
| 属性 | 说明 | CSS |
|---|---|---|
| appearance | 允许您使一个元素的外观像一个标准的用户界面元素 | 3 |
| box-sizing | 允许你以适应区域而用某种方式定义某些元素 | 3 |
| icon | 为创作者提供了将元素设置为图标等价物的能力。 | 3 |
| nav-down | 指定在何处使用箭头向下导航键时进行导航 | 3 |
| nav-index | 指定一个元素的Tab的顺序 | 3 |
| nav-left | 指定在何处使用左侧的箭头导航键进行导航 | 3 |
| nav-right | 指定在何处使用右侧的箭头导航键进行导航 | 3 |
| nav-up | 指定在何处使用箭头向上导航键时进行导航 | 3 |
| outline-offset | 外轮廓修饰并绘制超出边框的边缘 | 3 |
| resize | 指定一个元素是否是由用户调整大小 | 3 |
补充学习:css3图片
弹性盒子由弹性容器(Flex container)和弹性子元素(Flex item)组成,弹性容器通过设置 display 属性的值为 flex 或 inline-flex将其定义为弹性容器,弹性盒子只定义了弹性子元素在盒子内的布局
direction属性:设置排列方式 属性值:rtl(right to left)这不是flex属性
设置弹性子元素在容器的排列方式(从上到下还是从左到右),应用在容器上
flex-direction: row | row-reverse | column | column-reverse
设置弹性子元素在横轴的对齐方式(控制的是x方向的间隔),如间隔等,应用在容器上
lex-start:弹性项目向行头紧挨着填充。默认值
flex-end:弹性项目向行尾紧挨着填充。
center:弹性项目居中紧挨着填充。空余空间在两边
space-between:弹性项目平均分布在该行上。如果剩余空间为负或者只有一个弹性项,则该值等同于flex-start。多余空间分布在弹性子元素之间,第一个与左边对齐,最后一个与右边对齐
space-around:弹性项目平均分布在该行上,两边留有一半的间隔空间。
justify-content: flex-start | flex-end | center | space-between | space-around

设置弹性子元素在纵轴上的排列(设置的是纵轴方向的间隔),设置在容器
align-items: flex-start | flex-end | center | baseline | stretch
用于指定弹性盒子的子元素换行方式,设置在容器。
flex-wrap: nowrap|wrap|wrap-reverse|initial|inherit;
用于修改 flex-wrap 属性的行为,设置在容器。类似于 align-items, 但它不是设置弹性子元素的对齐,而是设置各个行的对齐。
align-content: flex-start | flex-end | center | space-between | space-around | stretch
stretch - 默认。各行将会伸展以占用剩余的空间。flex-start - 各行向弹性盒容器的起始位置堆叠。flex-end - 各行向弹性盒容器的结束位置堆叠。center -各行向弹性盒容器的中间位置堆叠。space-between -各行在弹性盒容器中平均分布。space-around - 各行在弹性盒容器中平均分布,两端保留子元素与子元素之间间距大小的一半。order:数值
align-self: auto | flex-start | flex-end | center | baseline | stretch
媒体查询:针对不同的媒体类型,设置不同的样式规则
属性:@media
@media not|only mediatype and (expressions) {
CSS 代码...;
}
设置设备的类型
| 值 | 描述 |
|---|---|
| all | 用于所有多媒体类型设备 |
| 用于打印机 | |
| screen | 用于电脑屏幕,平板,智能手机等。 |
| speech | 用于屏幕阅读器 |
body {
background-color: pink;
}
@media screen and (min-width: 480px) {
body {
background-color: lightgreen;
}
}
@media screen and (max-width: 699px) and (min-width: 520px) {
ul li a {
padding-left: 30px;
background: url(email-icon.png) left center no-repeat;
}
}
原文:https://www.cnblogs.com/zy116/p/12696668.html