CSS3学习笔记

1.font综合设置字体样式
选择器 {font : font-style font-wight font-size/line-height font-family}
使用font属性时,必须按上面的语法格式书写,不能更换顺序,其中不需要设置的属性可以省略,但是必须保留font-size和font-family,否则不生效
 
2.链接伪类选择器
  • :link /*未访问的链接*/
  • :visited /*已访问的链接*/
  • :hover /*鼠标移动到链接上*/
  • :active /*选定的链接*/
3.一般设置a标签为
a{
    color:gray;
    font-size: 16px;
}
a:hover{
    color:;
}
 
4.结构(位置)味蕾选择器
:first-child:选取属于其父元素的首个子元素的指定选择器
:last-child:选取属于其父元素的最后一个子元素的指定选择器
:nth-child:匹配属于其父元素的第n个子元素,不论元素的类型,偶数(even)奇数(odd),n从0开始
:nth-last-child(n):选择器匹配属于其元素的第n个子元素的每个元素,不论元素的类型,从最后一个子元素开始计数,n可以是数字,关键词或公式
 
5.目标伪类选择器
:target 目标伪类选择器可用于选取当前活动的目标元素。
 
6.letter-spacing 文字间距
7.word-spacing 单词间距
8.text-shadow 文字阴影
9.text-indent:2em 首行缩进两个汉字
 
10.行内元素特点
  1. 和相邻行元素在一行上
  2. 高、宽无效,但水平方向的padding和margin可以设置,垂直无效
  3. 默认宽度就是它本身内容的宽度
  4. 行内元素只能容纳文本或其他行内元素(a特殊)
 
11. 块级元素特点
  1. 总是从新行开始
  2. 高度、行高、外边距以及内边距都可以控制
  3. 宽度默认是容器的100%
  4. 可以容纳内联元素和其他块元素
 
12.行内块元素(inline-block)特点:有块级元素特点也有内联元素特点,可以设置宽高,比如input元素
    
13.属性选择器:选取标签带有某些特殊属性的选择器,支持简单正则比如:
css:
div[class^=font] {
    color : red;
}
html:
<input type="text">123</input>
<input type="button">123</input>
css:
input[type=text]{
    color:red;
}
 
14.伪元素选择器:
  1. e::first-letter 文本的第一个单词或字(如中文、日文、韩文)
  2. e::first-line 文本第一行
  3. e::selection 可改变选中文本的样式
  4.  
p::first-letter{
    font-size: 20px;
    color:red;
}
p::first-line{
    color:skyblue;
}
p::selection{
    color:orange;
}
 
15.e::before 和 e::after 在e元素内部的开始位置和结束位置创建一个元素,该元素为行内元素,且必须要结合content属性使用。
div::before {
    content:"开始";
}
div::after {
    content:"结束";
}
 
16.背景简写:
background: transparent url(image.jpg)  center center no-repeat;  //背景图居中
 
17.背景图缩放
background-size : cover; //铺满,等比例缩放
background-size : 50%; 
background-size: contain//自动调整缩放比例,保证图片完整
18.凹凸文字
div{
    text-shadow: 1px 1px 1px #000, -1px -1px 1px #fff;     //凸文字
}
 
div{
    text-shadow: -1px -1px 1px #000, 1px 1px 1px #fff;    //凹文字
}
 
19.表格的细线边框:
table { border-collapse : collapse; }
 
20.清除元素的默认内外边距
* {
    margin: 0;
    padding: 0;
}
注意:行内元素只有左右外边距的,是没有上下外边距的,也没有宽度和高度,在ie等低版本浏览器也有会问题。
 
21.嵌套块元素垂直外边距的合并
对于两个嵌套关系的块元素,如果父元素没有上内边距及边框,则父元素上外边距会与子元素的上边距发生合并,合并后的外边距为两者中的较大者,即使父元素的上边距为0,也会发生合并。
解决办法:①给父元素加个边框②给父元素添加overflow: hidden;
注意:如果一个盒子没有给定宽度/高度或者继承父亲的宽度/高度,则padding不会影响本盒子的大小。
 
22.ccs3盒模型
css3中可以通过box-sizing来指定盒模型,即可指定为content-box、border-box,这样我们计算盒子大小的方式就发生了改变。
可以分为两种情况:
1、box-sizing: content-box; 盒子大小为width + padding + border ,content-box:此值为默认值,其让元素维持W3C的标准Box Mode。
2、box-sizing:border-content; 盒子大小为width,就是说padding和border是包含到width里面的。
 
23.盒子阴影
box-shadow:水平位置,垂直位置,模糊距离,    阴影尺寸,阴影颜色,内/外阴影;
img{
    border: 1px solid orange;
    box-shadow: 3px 3px 5px 4px rgba(255,255,255,0.4);
}
 
24.清除浮动的本质:主要是为了解决父元素因为子级浮动引起内部高度为0的问题。
<style>
    .father1 { width: 480px;}
    //.father不设置高度,由子元素填充
    .son1{width:100px; height: 100px; float: left;}
    .son2{width:100px; height: 100px; float: left;}
    //此时浮动的话,.father1 的高度为0,.father2会上移和.son1和.son2重叠
</style>
<div class="father1">
    <div class="son1">123</div>
  <div class="son2">456</div>
</div>
<div class="father2">789</div>
 
25.清除浮动的方法:
①额外标签法:
<style>
    .father1 { width: 480px;}
    .father2 { width: 480px;}
    .son1{width:100px; height: 100px; float: left;}
    .son2{width:100px; height: 100px; float: left;}
        .clear{ clear: both;}
</style>
<div class="father1">
  <div class="son1">123</div>
  <div class="son2">456</div>
//在浮动的盒子后面添加一个空盒子
    <div class="clear"></div>
</div>
<div class="father2">789</div>
 
②父级添加overflow属性方法
<style>
    .father1{width:480px; overflow: hidden;}    //可以触发bfc,bfc可以清除浮动
    .father2 { width: 480px;}
   .son1{width:100px; height: 100px; float: left;}
   .son2{width:100px; height: 100px; float: left;}
</style>
<div class="father1">
  <div class="son1">123</div>
  <div class="son2">456</div>
</div>
<div class="father2">789</div>
 
③使用:after伪元素清除浮动
<style>
.clearfix:after{ content:'.'; display: block; height: 0; visibility: hidden; clear: both; }
.clearfix {*zoom: 1;} //IE6、7专用
</style>
<div class="father1 clearfix">
  <div class="son1">123</div>
  <div class="son2">456</div>
</div>
<div class="father2">789</div>
 
④使用before和after双伪元素清除浮动
.clearfix:before, .clearfix:after {
    content: "",
    display:table;    /*这句话可以触发bfc,bfc可以清除浮动*/
}
.clearfix:after{
    clear:both;
}
.clearfix{
    *zoom: 1;
}
 
26.定位(position):在ccs中,position属性用于定义元素的定位模式
 
描述
是否脱标
是否可以边偏移
移动位置基准
static
自动定位(默认定位方式)
不脱标
不可以
正常模式
relative
相对定位,相对于其原文档流的位置进行定位
不脱标
可以
相对自身位置移动
 absolute
绝对定位,相对于其上一个已经定位的父元素进行定位
脱标
可以
相对定位父级移动位置
fixed
固定定位,相对于浏览器窗口进行定位
脱标
可以
相对浏览器移动位置
加了绝对定位的盒子,margin 左右auto 就无效了。
 
27.叠放次序(z-index):当多个元素同时设置定位时,定位元素之间有可能发生重叠。
注意:①z-index默认值是0,取值越大,定位元素在层叠元素中越居上。
②如果取值相同,则根据书写顺序,后来居上。
③后面数字一定不能加单位。
④只有相对定位、绝对定位、固定定位由此属性,其余标准流,浮动,静态属性都无此属性,亦可指定其属性。
⑤定位后,元素模式会发生转变,变成行内块模式。跟float类似。
 
28.元素的显示与隐藏
①display
display:none; //隐藏元素,隐藏之后不保留位置,但元素一直存在
display:block; //显示元素
 
②visibility
visibility: hidden; //隐藏元素,但是保留位置
visibility: visible; //显示元素
 
③overflow
visibile:不剪切内容也不添加滚动条
auto: 超出自动显示滚动条,不超出不显示滚动条
hidden: 不显示超过对象尺寸的内容,超出的部分隐藏掉
scroll:不管超出内容是否,总是显示滚动条
 
  1. !important 属性:用来提升属性的权重。其属性的权重为无穷大。
!important提升的是属性的权重,不是选择器的权重。
语法格式: 属性: 值  !important;
p{
color: #f00 important;
 
30.样式冲突:如果一个标签内的多个类名设置的样式一样的话,就会出现样式冲突,那么是以css中的代码作为标准,谁写在后面就以谁作为标准, 与html位置无关。
<style>
.cls2 {
    color: "red";
}
.cls1 {
    color: "white"    ;
}
</style>
<body>
    <p class="cls1 cls2">我是皮皮虾</p>            // 会显示为红色
</body>
CSS高级技巧
 
1.鼠标样式:cursor:pointer  || default || move || text || default
 
2.轮廓:outline:outline-color | outline-style | outline-width
 
outline: 0; 或者 outline: none;        //取消轮廓线
 
3.防止文本域拖拽: resize:none;
 
4.垂直对齐:vertical-align:baseline || middle  || top || bottom ; 
注意:对于块级元素无效,只针对于行内元素或行内块元素,通常用来控制图片和表单与文字的对齐。
css:
textarea{
    height: 300px;
    width: 200px;
    vertical-align: top;
}
html:
用户留言:<textarea></textarea>
 
5.去除图片底侧空白缝隙:低版本浏览器会出现这种情况
有个很重要的特性,图片或者表单等行内块元素,他的 底线会和父盒子的基线对齐,这样会造成一个问题,就是图片底部会有一个空白缝隙。
解决办法:1.给img vertical-align:middle | top ; 等等,让图片不要和基线对齐。2.给img添加属性display:block;
 
6.溢出的文字隐藏:
①word-break :自动换行(主要处理英文单词)
normal:默认换行规则
break-all:允许在单词内换行
keep-all:只能在半角空格或连字符处换行
 
②white-space:
normal: 默认处理方式
nowrap:强制在同一行内显示所有文本,直到文本结束或者遭遇br标签对象才换行。
 
③text-overflow:文字溢出
text-overflow:clip ||  ellipse;
clip:不显示省略标记(...),而是简单的剪切
ellipse:当对象内文本溢出时显示省略标记。
注意:一定要首先强制一行内显示,再次和overflow属性搭配使用。overflow:hidden;
 
7.精灵图(sprite):一般只用于背景小图
div{
    width: 17px;
    height: 13px;
    background: url(images/jd.png) no-repeat;
    backgroud-position: 0 -388px;    //背景图片往上移动所以是负值
}
8.字体图标
字体图标网站:icomoon.io
selection.json可以追加新图标
 
9.滑动门:就是利用css精灵(主要是背景位置)和盒子padding撑开宽度,以便能适应不同字数的导航栏。
css:
a{
    display:inline-block;
    height: 33px;     //千万不能给宽度
    background: url(image/logo.png) no-reapeat;
    padding-left: 15px;
}
a span{
    height: 33px;
    display: inline-block;
    padding-right: 15px;
    background: url(image/logo.png) no-reapeat right;
}
html:
<li>
    <a href="#">
        <span>导航栏内容</span>
    </a>
</li>
总结 :①a设置背景左侧,padding撑开盒子宽度。
②span设置背景右侧,padding 撑开合适宽度剩下由文字继续撑开宽度。
③之所以a包含span就是因为整个导航都是可以点击的。
 
10.过渡:transition:要过渡的属性    花费的时间    运动曲线    何时开始;
 
属性
描述
CSS
transition
简写属性,用于在一个属性中设置四个过渡属性
3
transition-property
规定应用过渡的CSS属性名称
3
transition-duration
定义过渡效果花费的时间,默认是0
3
transition-timing-function
规定过渡效果的时间曲线,默认是“ease”
3
transition-delay
规定过渡效果何时开始,默认是0
3
css:
div{
    width: 200px;
    height: 100px;
   
    transition: width 0.6s ease 0s, height 0.3s ease-in 1s;            //写在这里的话,鼠标放上去移下来都有效果,卸载hover中的话,鼠标移出就没有效果了。
    transition: all 0.6s;
}
div:hover{
    width: 600px;
    height: 300px;
}
11.2D变形(transform):可以实现元素的位移、旋转、倾斜、缩放甚至支持矩阵方式,配合过渡和动画,可以取代大量之前的flash效果。
translate(移动):
div{
    width: 100px;
    height: 100px;
   
    transition: all 0.5s;
}
div:active{
    transform: translate(50px, 50px);
    transform: translateX(50px);    //只移动x轴
    transform: translate(50%);    //走自己宽度的的一半即走50px,并非走浏览器窗口的一半。
}
 
水平垂直居中:
div{
    width: 100px;
    height: 100px;
    background-color: pink;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
}
 
scale(缩放):
transform: scale(0.8, 1);
transform: scaleX(1);
 
div{
    width: 100px;
    height: 100px;
    background-color: pink;
    margin: 100px auto;
}
div:hover{
    transform: scale(1.2, 1.5);
    transform: scale(2);    //宽度,高度都缩放
}
 
rotate(旋转):
div{
    transform-origin: left top;
    transform: rotate(180deg);    //设置旋转点
}
 
skew(倾斜):
transform: skew(300deg, 0deg);
 
12.3D变形(CSS3)transform
rotateX:沿着x立体旋转
img{
    transition: all 0.5s ease 0s;
}
img:hover{
    transform: rotateX(180deg);
}
 
透视(perspective):一般设置给父元素,作用于3 D转换的子元素。
div{
    perspective: 500px;        //近大远小,数值小更明显
}
 
可以简写成
transform: translate3d(x, y, z); 
 
backface-visibility:当下元素不面向屏幕时,是否可见
div{
    margin: 0;
    padding: 0;
    background-color: pink;
}
div img{
    z-index: 1;
    backface-visivility: hidden;    //不是正面面向屏幕就隐藏
}
 
13.动画(CSS3)animation
div{
    height:100px;
    width:100px;
    background-color: pink;
    animation: go 2s ease 3 infint;
}
@keyframes go {
    from{
        transform: translateX(0);
    }
    to {
    transform: translateX(600px);
    }
}

 
@keyframes go{
    0% {
        transfrom: translate3d(0,0,0);
    }
    25%{
        transform: translate3d(800px, 0 , 0);
    }
    50% {
        transform: translate3d(800px, 400px, 0);
    }
    75% {
        transform: translate3d(0, 400px, 0);
    }
    100% {
        transform: translate3d(0, 0, 0);
    }
}
 
汽车来回跑动小动画demo:
<style>
img{
    animation: car 5s;
}
@keyframes car{
    0%{
        transform: translate3d(0,0,0);
    }
    50%{
        transform: translate3d(1000px,0,0);
    }
    51%{
        transform: translate3d(0,0,0) rotate(180deg);    //如果有多组变形,都属于transform那我们用空格隔开就好
    }    
    100%{
        transform: translate3d(0,0,0, rotate(180deg));
    }
}
</style>
<html>
  <body>
    <img src="image/1.jpg" width="100px" />
  </body>
</html>
 
 
图片无缝滚动demo:
<style>
*{
    padding:0;
    margin: 0;
}
ul{
    list-style: none;
}
nav{
    width: 882px;
    height: 86px;
    border: 1px solid #000;
    margin: 0 auto;
    overflow: hidden;
}
nav li{
    float: left;
}
nav ul{
    animation: moving 5s linear infinite;
}
nav:hover{
    animation-play-state: paused;         //鼠标放上去暂停动画
}
@keyframes moving {
from { transform: translateX(0);}
to{transform: translateX(-882px);}
}
</style>
<nav>
    <ul>
        <li><img src="images/1.kpg" ></li>
        <li><img src="images/2.kpg" ></li>
        <li><img src="images/3.kpg" ></li>
        <li><img src="images/4.kpg" ></li>
        <li><img src="images/5.kpg" ></li>
    </ul>
</nav>
 
14.伸缩布局
主轴:flex容器的主轴主要是用来配置flex项目,默认是水平方向
侧轴:与主轴垂直的轴称作侧轴,默认是垂直方向的
方向:默认主轴从左向右,侧轴默认从上到下
主轴和侧轴并不是固定不变的,通过flex-direction可以互换。
 
<style>
section{
    80%;
    height:200px;
    border: 1px solid pink;
    margin: 100px auto;
    display: flex;
    min- 500px;    //最小宽度
}
section div{
    height: 100%;
}
section div:nth-child(1){
     
    flex: 1;
}
section div:nth-child(2){
    
    flex: 2;
}
section div:nth-child(3){
    background-color: pink;
    flex: 3;
}
</style>
 
<section>
        <div></div>
    <div></div>
    <div></div>
</setction>
 
①属性:justify-content:调整主轴对齐(水平对齐)
 
描述
白话文
flex-start
默认值,项目位于容器的开头。让子元素从父容器的开头排序
让子元素从父容器的开头排序
flex-end
项目位于容器的结尾
让子元素从父容器的后面开始排序
center
项目位于容器的中心
让子元素在父容器的中间显示
space-between
项目位于各行之间留有空白的容器内
左右的盒子贴近父盒子,中间的平均分布空白间距
space-around
项目位于各行之前、之间、之后都留有空白的容器内
相当于给每个盒子添加了左右margin 边框
②属性:align-items:调整侧轴对齐(单行,垂直对齐)
 
描述
白话文
stretch
默认值,项目被拉伸以适应容器
让子元素的高度拉伸适用父容器(子元素不给高度的前提下)
center
项目位于容器的中心
垂直居中
flex-start
项目位于容器的开头
垂直对齐开始位置
flex-end
项目位于容器的结尾
垂直对齐结束位置
③属性:flex-wrap:控制是否换行
 
描述
nowrap
默认值,规定灵活的项目不拆行或不拆列。不换行,则收缩(压缩)显示。强制一行显示
wrap
规定灵活的项目在必要的时候拆行或拆列。
wrap-reverse
规定灵活的项目在必要的时候拆行或拆列,但是以相反的顺序。
 
④属性align-content 堆栈(由flex-wrap产生的独立行)对齐:针对flex容器里面多轴(多行)的情况,align-items是针对一行的情况进行排列。必须对父元素设置自由盒属性display:flex; ,并且设置排列方式为横向排列 flex-direction:row; ,并且设置换行,flex-wrap: wrap; 这样这个属性才能起作用。
 
描述
stretch
默认值,项目被拉伸以适应容器
center
项目位于容器的中心
flex-start
项目位于容器的开头
flex-end
项目位于容器的结尾
space-between
项目位于各行之间留有空白的容器内
space-around
项目位于各行之前、之间、之后都留有空白的容器内
ps:flex-flow :row wrap;=== (flex-direction: row; flex-wrap: wrap;)
 
⑤属性:order:控制子项目的排列顺序,正序方式排列,从小到大
用css来控制盒子的前后顺序,默认是0
div{
    background: pink;
    order: 1;
}
 
------内容来自于 多年前自己的学习笔记
原文地址:https://www.cnblogs.com/cirry/p/12402375.html