zoukankan      html  css  js  c++  java
  • CSS基础

    CSS选择器

    1、标签选择器:所有标签选中

    2、id 选择器:id 唯一;字母、下划线和数字组成,数字不开头;只会选中一个元素;

    3、类选择器:class="类名 类名"(多类)

    4、后代选择器:tag tag{};

    • 上面的 tag 可以是标签、id 和 class 选择器;可以无限往下发展;后代包含子和孙;

    5、子元素选择器:tag>tag{} 不能有空格

    • 关于 table>tr>td 不起作用的解释:浏览器自动为 table 添加 tbody 导致的,用 table>tbody>tr>td 就可以选到每一个格子;

    6、交集选择器:tagtag{}  二者无任何符号

    7、并集选择器:tag,tag{}

    8、兄弟选择器

    • 相邻兄弟:+ 连接;只能选中同级相邻后面的一个且中间不能隔开
    • 通用兄弟:~ 连接;同级指定标签的后面,无论是否隔开

    9、序选择器

    (1)作用:用来选择同级别和同类型的第几个

    (2)常用10个序选择器:其中的 n 可以为 odd(奇数)、even(偶数)和 xn+y 

    • 同级别不分类型

    • 同级别同类型 

    10、属性选择器:p[id];p[id=one];p[attr^=value]:什么开头;p[attr$=value]:什么结尾;p[attr*=value]:包含什么

    11、通配符选择器:*{}通配所有元素;标签多的时候性能差;

    12、伪类选择器(a标签)

    (1)作用:修改a标签不同状态的样式,序选择器实质也是伪类选择器;

    (2)状态:访问前(:link);访问后(:visited);长按时(:active);悬浮时(:hover)

    (3)注意:出现顺序为:link visited hover active;伪类选择器放在标签选择器的后面;盒子相关属性放在标签里;文字背景相关属性放在伪类选择器里

    13、伪元素选择器

    (1)第一个字母和第一行

    p {
        font-size: 12px;
    }
    
    p:first-letter {
        font-size: 24px;
        float: left;
    }
    
    p:first-line {
        font-weight: bold;
    }

    (2)内容之前和之后:其中的 content 既可以是字符串也可以是图片,添加的内容还能设置样式

    li::before{
        /*content: url("abc.png");*/
        content: "POW!";
        background-color: skyblue;
        color:red;
    }
    li::after{
        content: "liafter";
    }

     

    CSS属性

    1、文字属性

    (1)font-style:italic(斜体)normal(正常);

    (2)font-weight:bold/bolder/lighter(粗细),还可以用数字(100-900);

    (3)font-size:20px,一定要带单位 px;在设置大小等的数字的时候必须指定单位才能生效,0除外;

    (4)font-family:Arial,"楷体","微软雅黑";中文和有空格的英文要用引号;中英文分别设置字体;从左到右进行字体的搜索,没有或者不能处理当前文字则自动切换;

    (5)文字属性的简写:   font:style weight size family

    • style 和 weight 可以交换位置,size 和 family 可以交换位置,但是 size 和 family 一定要在最后;
    • style 和 weight 可以省略不写,但是 size 和 family 不能省略;

    2、文本属性

    (1)文本装饰:text-decoration:underline | overline | line-through | none;

    (2)文本转换:text-transform:capitalize | uppercase  | lowercase | none;

    (2)水平对齐:text-align:center;

    (3)文本缩进:text-indent:2em;

    p{
        letter-spacing: 0.5em;
        word-spacing: 2em;
        line-height: 1.5;
        text-align: center;
    }

    3、颜色控制属性(color)

    (1)英文:表达有限,用于调试;

    (2)RGB(red ,green ,blue):取值0到255;三值一样为灰色;

    (3)RGBA:前面和 rgb 一样,最后一个是透明度,取值0到1;

    (4)十六进制:原理就是 rgb;两位16进制对一位 rgb;

    (5)十六进制简写:#ffee00 == #fe0  ; 必须是这个形式才能简写;

    -----------------------tips---------------------------

    1. 关于 color 和 background-color :前者设置文字颜色,后者设置背景颜色,可以应用于绝大部分的 html 元素;
    2. css 注释和 java 的多行注是一样的;

    -------------------------------------------------------

     

    CSS三大特性

    1、继承性:子元素可以使用父元素的某些属性

    • 不是所有的属性都可以继承,只有以color、font、text和line开头的属性才可以继承;
    • 继承性中的特殊性:a 标签的下划线和颜色以及 h 标签的大小是无法通过继承来改变的;

    2、层叠性:同一元素多次设置了相同属性,则该属性会发生覆盖

    3、优先级:确定如何层叠

    (1)基本原则:

    • 是否直接选中(间接选中指继承):直接优先于间接,都是间接听离得近的;
    • 是否相同选择器:直接选中的相同选择器谁在后面听谁的;
    • 不同选择器:直接选中的不同选择器优先级:id》类》标签》通配符》继承》浏览器默认;

    (2)权重原则:多选择器混用如何确定优先级

    • 规则:先看 id 个数,再看 class 个数,然后是 tag 个数,三个都一样谁在后听谁的;

    (3)优先级提升(!important):提升直接选中的优先级,间接选中的没有作用;加在需要提升的属性的后面,只对该属性提升;

    CSS显示模式

    1、div和span

    (1)div 是容器级别的标签(可以嵌套其他的标签),span 是文本级标签(只能嵌套文本、图片和超链接);

    2、显示模式

    (1)标签分类:html---容器级 和 文本级;css---块级 和 行内元素;

    (2)显示模式:

    • 块级元素:独占一行;默认和父级元素一样宽;可以设置宽高;
    • 行内元素:不独占一行;默认和内容一样宽;不可以设置宽高;
    • 行内块级:既不独占一行,又可以设置宽高;img;

    (3)总结:容器级的都是块级,文本级的除了 p 以外都是行内元素

    (4)显示模式转换:

    • 三种显示模式可以通过设置 display 属性相互转换;
    • display 的3种取值:block(块级)、inline(行内)、inline-block(行内块级);
    • 关于 display:none 和  visibility: hidden 的不同:前者相当于将元素从文档流中剔除,后者仅仅是将元素隐藏,相应的会在页面保留其位置;

    CSS背景和精灵图

    1、背景

    (1)颜色:background-color:red;

    (2)图片:background-image:url(images/1.jpg);图片小会自动进行平铺

    (3)平铺:background-repeat:repeat | no-repeat | repeat-x | repeat-y

    • 应用:网页背景的平铺可以减小图片的大小,提升访问的速度;

    (4)定位(background-position)

    • background-position:水平 垂直(写数值的时候要带单位,数值可以为负)
    • 应用:图片核心内容的居中显示,设置背景,而不是设置 img

    (5)背景关联和缩写

    • 背景关联:background-attachment:scroll(滚动)| fixed(固定);
    • 背景缩写:background:颜色 图片 平铺 关联 定位;其中任何一个都可以省略;

    (6)背景图片和插入图片的区别

    • 背景不会占用容器的空间;
    • 背景有定位的属性,更方便位置的调整;
    • 插入的语义强于背景,想被搜索引擎搜索到用插入;
    • 图片的合成用 div 和背景图片;

    2、精灵图

    • 一种图像的合成技术,减少请求的次数;就是将很多小的图片合成为一张大图;

    • 设置容器的宽高,再利用背景的定位属性来确定要展示的图片的位置(可以使用 fireworks 软件来进行辅助);

    盒子模型

    1、边框属性(border)

    (1)四种写法

    • 统一设置:border:宽度 样式 颜色-----只有样式不能省略
    • 分别设置:border-top | bottom | left | right:宽度 样式 颜色
    • 按要素设置:border-width | style | color:上右下左(顺时针);省略的时候上下一致,左右一致;
    • 非连写:border-top-style(少用)

    (2)边框圆角(border-radius)

    2、内边距(padding)和外边距(margin)

    (1)内边距(padding):border 到 内容的间距

    • 连写:padding:上右下左;可以省略,省略后上下一致,左右一致;
    • 不连写:padding-top | left:
    • 说明:设置内边距后,容器会被拉伸;内边距的部分也有背景;

    (2)外边距(margin):标签与标签之间的间距

    • 写法:margin | margin-top:注意事项与 padding 一样;
    • 注意:外边距没有背景;
    • 外边距的合并:水平方向是叠加,垂直方向是合并,合并的时候谁大听谁的;

    3、盒子模型(box)

    (1)盒子模型的概述:手机盒子

    • 所有的 html 都可以设置宽高、边框、外边距和内边距;

    (2)盒子宽度和高度

    • 内容的宽度和高度:设置的 width 和 height;
    • 元素的宽度和高度:width + 内边距*2 + border宽*2;
    • 元素空间的宽度和高度:width + 内边距*2 + border宽*2 + 外边距*2;

    (3)盒子的box-sizing 属性

    • 作用:通过设置这个属性可以保证元素再增加 border 和 padding 属性之后,元素的宽和高不变
    • 属性值:content-box(默认) | border-box(宽高恒定)

    (4)两个盒子的嵌套

    • 小盒子在大盒子的居中可以通过设置 margin 和 padding 来实现;
    • 居中首选 padding ,其次 margin;
    • margin-top 产生问题解决:给大盒子设置 border;
    • margin:0 auto(可以设置水平居中,垂直居中不行);
    • text-align (让盒子里的文字和图片居中)和 margin:0 auto(让盒子自己水平居中);

    (5)清空默认边距

    • 作用:方便盒子的定位和宽高的设置;
    • 常用的方法:*{margin:0;padding:0;}
    • 开发用的方法:百度 css reset

    (6)行高和字号

    • 文字默认在一行的行高中垂直居中;
    • 一行文字的垂直居中:设置行高(line-height)和盒子的高度相等即可;
    • 多行文字居中:只能设置padding;
    • 盒子中的文字:padding 以左边的为准,右边的有换行造成的误差;padding-top 的设置要注意行高带来的影响;

     

    CSS浮动

    1、网页的布局方式

    (1)标准流(文档流)排版

    • 块级元素垂直排版;
    • 行内和行内块级是水平排版;

    (2)浮动流排版

    • 是一种 半脱离标准流 的排版方式;
    • 浮动流只有水平排版,设置相对于父级元素的左对齐或者右对齐,没有 center,不可以使用 margin:0 auto;
    • 浮动流不区分块级和行内元素,更类似于行内块级元素的特点,即可水平排版又可以设置宽高;

    (3)定位流排版

    2、浮动(float)

    (1)浮动元素脱标

    • 定义:浮动的元素脱离标准流,像是从标准流里被删除了一样;
    • 影响:会造成元素的覆盖问题;

    (2)浮动元素排序规则

    • 相同方向,先浮动的在前;
    • 不同方向,左浮找左,右浮找右;
    • 元素浮动后的位置与浮动前的位置相关:浮动前在第几行浮动后就在第几行,这里的浮动前的位置是在前面的元素都浮动之后的位置;
    • 浮动是有顺序的浮动;

    (3)浮动贴靠和字围现象

    • 贴靠:父元素的宽度不够,浮动元素会逐级往上贴靠,都不够放的话,会一直贴到最上级的父元素;
    • 字围:浮动元素不会覆盖文字,文字会自动围绕在浮动元素的周围;

    (4)浮动在网页排版的应用

    • 网页的排版:垂直方向标准流,水平方向浮动流;
    • 网页的排版练习

    清除浮动

    --浮动前

    --浮动后

    1、清除方式一

    (1)浮动元素的高度问题

    • 标准流中内容可以撑起父元素的高度;
    • 浮动流中内容无法撑起父元素的高度;

    (2)方式一:给前面的盒子设置高度(少)

    2、清除方式二

    (1)给后面的盒子设置 clear 属性;

    (2)clear 的属性值:

    • none 默认:左浮找左,右浮找右;
    • left:不找前面的左浮;
    • right:不找前面的右浮;
    • both:不找前面的浮动;基本都用这个;

    (3)clear 导致的 margin-top 失效

    • margin-top 如果是相对于父元素的,则必须要为父元素设置边框才有效;
    • 前一个盒子的元素都浮动之后,前面的元素就可以看作没了,此时设置的 mt 是相对与 body 的,而不是前一个盒子的,而 body 又没有边框,所以 mt 无效;

    3、清除方式三:隔墙法(少)

    (1)外墙

    • 实质就是在两个盒子的中间加一个块级元素,然后给这个块级元素设置 clear both;
    • 带来的问题:后面盒子的 mt 可以用,而前面盒子的 mb 不能用;
    • 解决:通常 mt 和 mb 都不用,直接给中间的块级元素设置高度;

    (2)内墙

    • 实质是在前面一个盒子的最后一个子元素的后面添加一个块级元素,然后 clear both;
    • 这种方法 mt、mb和给添加的块级设置 height 都是可行的;
    • 内墙可以撑起前一个盒子的高度,而外墙不可以;

    4、清除方式四

    (1)伪元素选择器:在指定的元素之前或者之后添加一个元素

    div::before/after{
        content:....;
        visibility:hidden;
    }

    (2) 伪元素选择器清除浮动

    div::after{
        content:'';
        display:block;
        height:0px;
        visibility:hidden;
        clear:both;
    }
    
    /*兼容低版本的IE*/
    div{
        *zoom:1;
    }

    5、清除方式五

    (1)overflow:hidden 清除浮动

    /*给前面的盒子设置overflow属性*/
    
    .box1{
        overflow:hidden;
        *zoom:1;
    }

    (2)overflow:hidden的其他作用

    • 裁剪掉超出标签的内容;
    • 父子元素,子元素设置 mt 无效的问题,可以在父元素设置overflow; 

    6、总结

    • clear(后一个盒子加)、overflow(前一个盒子加)和 伪元素选择器用来清除浮动比较多

    7、练习:网易注册界面的实战*

    CSS定位(position)

    1、相对定位(relative)

    (2)定义:相对于自己以前在标准流中的位置来移动,不会脱标;

    (3)使用:结合 top bottom left right 来使用;

    (4)注意:

    • 相对定位水平和垂直的方向上只能选择一个,如:有 left 就没有 right;
    • 区分块级和行内元素;
    • 给相对定位的元素设置margin 和 padding 都是对原来的位置起作用,而不是移动后的位置;
    • 相对定位中原来的位置极其重要;

    (5)应用:位置的微调;结合绝对定位来使用;

    2、绝对定位(absolute)

    (1)position:absolute;

    (2)概念:相对于 body 来定位

    (3)注意:

    • 绝对定位是脱标的,且不区分行内和块级;
    • 结合 top 等来使用;
    • 绝对定位的参考点默认是body,如果祖先元素中有定位流元素,则以该元素为参考点,如果祖先中存在多个定位流则就近原则,这里的静态流不含 static;
    • body 作为参考点是以当前的显示页面作为参考,而不是以整个页面作为参考;
    • 绝对定位会忽略祖先元素的padding;

    (4)和相对定位的配合使用:

    • 单用相对定位的局限:会占用标准流的空间;
    • 单用绝对定位的局限:受浏览器宽高的影响;
    • 配合使用解决以上的局限:使用方法:子绝父相;

    (5)绝对定位的水平居中:left:50%;margin-left:-元素宽度的一半(用 margin:0 auto 是无效的);

    3、固定定位(fixed)

    • 相对浏览器窗口固定,而不是网页;脱标且不区分行内和块级;

    4、静态定位(static)

    (1)元素默认就是静态定位

    (2)元素都有一个 z-index属性,默认值为 0;

    (3)z-index 属性是用来控制定位流的覆盖关系的,谁大谁在上面;

    (4)默认情况,定位流会覆盖标准流;后面的定位流会覆盖前面的定位流;

    (5)在设置了z-index 属性的条件下,谁大谁在上;

    (6)z-index 的从父现象:在父元素没有设置 z-index 的前提下,谁的 z-index 大谁在上,在父元素设置了 z-index 的前提下, 父级的 z-index 大,谁就在上;

    5、补充text-align、line-height和vertical-align

    (1)text-align:只对文字图片和 a 标签有效;

    (2)line-height:居中效果只对文字和图片有效(包含标签中的文字和图片);

    (3)vertical-align:针对 inline 元素有效,将 display 设置为 table-cell 也是有效的;

    过渡模块

    1、基本使用

    • 使用的三要素:属性变化;哪个属性需要过渡;效果的时长;
    • hover伪类所有的标签都可以用;
    • 注意:多属性的过渡效果的写法如下;
    div{
        transition-property:width,height;
        transition-duration:5s,5s;
    }

    2、其他属性

    • transition-delay:设置动画延迟的;
    • transition-timing-function:设置动画的速度的(linear、ease-in-out)

    3、连写

    • 格式:transition:属性 时长 速度 延迟;
    • 后面两个值可以省略;
    • 多属性依旧使用逗号隔开即可;
    • 多属性的过渡都一样的话可以这样写:transition:all 5s;

    2d转换模块

    1、基本入门

    (1)平移:transform:translate(x,y);

    (2)旋转:transform:rotate(45deg);

    (3)缩放:transform:scale(x,y);以1为界,大于为放大,水平垂直方向的缩放一样时可以只写一个值;

    (4)综合:transform:rotate(45deg) translate(x,y) scale(x,y);

    • 中间以空格隔开;
    • 旋转的同时坐标系也跟着旋转,会影响后面的平移;

    2、形变中心点

    (1)默认就是元素的中心点,可以通过设置来改变;

    (2)transform-origin三种取值:像素、百分比、关键字

    (3)transform-origin:50% 50%;

    3、旋转轴向

    (1)rotateX();rotateY();rotateZ();

    (2)默认绕 Z 轴转;

    4、透视属性

    (1)就是近大远小的视觉效果;

    (2)perspective:500px;后面的属性值的含义是从多远的距离看,越近效果越明显;

    5、阴影

    (1)盒子阴影:box-shadow:水平偏移 垂直偏移 模糊度 阴影扩展 颜色

    • 简写只要前面的3个属性即可;
    • 阴影分内外阴影,默认外阴影,默认颜色和盒子的内容颜色一样;

    (2)文字阴影:text-shadow:水平偏移 垂直偏移 模糊度 颜色

    • 颜色的默认和盒子的一样;

    (3)翻转菜单的练习

    动画模块

    1、基本使用

    (1)动画与过渡的异同:

    • 动画无需人为触发,而过渡需要;
    • 二者都包含三要素;

    (2)动画的三要素:

    • 动画名称:animation-name:fff;
    • 动画时长:animation-duration;
    • 动画内容:
    @keyframes fff{
        from{
            ...
        }
        to{
            ...
        }
    }
    
    /*创建动画的第二种形式*/
    @keyframes fff{
        0%{
            ...
        }
        50%{
            ...
        }
        100%{
            ...
        }
    }

    2、其他属性

    (1)animation-delay:动画延迟;

    (2)animation-timing-function:动画的速度;

    (3)animation-iteration-count:动画的循环次数;

    (4)animation-direction:是否来回运动;

    (5)animation-play-state:动画暂停或播放状态;

    (6)animation-fill-mode:规定动画开始或者结束时的状态(none、backwards、forwards、both);

    3、连写和应用

    (1)连写

    • animation:名称 时长 速度 延迟 次数 往返
    • 简写保证三要素即可

    (2)应用

    • 云层效果
    • 无限滚动

    3d转换模块

    1、概述

    • 要想呈现3d效果给父元素加 transform-style:preserve-3d;

    2、正方体

    • ul li 布局;每个面进行平移和旋转的变化,注意旋转的角度;
    • 为保证前后上下四个面的内容正确显示,先旋转再平移,旋转的角度分别为 90、180、270、0
    • 左右的两个面和内容无关,随意;

    3、长方体

    • 在正方体的基础上前后上下四个面水平方向进行缩放;左右两个面根据缩放的情况增加平移的距离;
    • 父元素被缩放了,子元素也会跟着缩放;

    4、3d播放器

    • 背景图片随浏览器窗口的变化自动调整;
    • 3d的旋转相册;
    • 桃心动画;

    背景相关

    1、背景尺寸相关

    (1)属性 background-size

    (2)属性值:

    • 具体像素;
    • 百分比;
    • 宽或高等比拉伸(只需把宽或高设置成为 auto 即可);
    • cover:等比拉伸知道背景填满元素;
    • contain:等比拉伸直到宽或者高达到元素额界限;

    2、背景图片定位区域属性

    (1)background-origin:设置背景图片从盒子模型的哪个部分开始填充;

    (2)属性值:padding-box(默认);border-box;content-box;

    3、背景绘制区域属性

    (1)background-clip:属性值和 origin 的属性值是一样的;默认是border;

    4、多重背景图片的设置

    (1)说明:就是给一个元素设置多张的背景图片,用背景定位的属性来布局;

    (2)格式:分开书写也可以

    div{
        background:url("") no-repeat top left,url("") no-repeat top right;
    }

     

    媒体查询(@media)

     

    1、概述

    • 使用 @media 查询,可以针对不同的媒体类型定义不同的样式;
    • @media 可以针对不同的屏幕尺寸设置不同的样式,可以用来设计响应式的页面;
    • 当你重置浏览器大小的过程中,页面也会根据浏览器的宽度和高度重新渲染页面;

    2、针对浏览器尺寸的CSS

    @media screen and (min-device-height: 768px) and (max-device- 1024px) {
        body{background:grey}
    }

    3、针对特定方向的CSS

    @media screen and (orientation: landscape) {
        #nav { float: left }
    }
    
    @media screen and (orientation: portrait) {
        #nav { float: none }
    }
    /*landscape 是宽大于高*/

    4、针对不同设备的CSS

    (1)设备宽高

    @media screen and (min-device-height: 768px) and (max-device- 1024px) {}

    (2)像素比率

    @media (device-pixel-ratio: 2) {
        body { background: url(twiceasbig.png) }
    }
    • 移动设备禁用缩放:head 里面设定元标签

    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">

    (3)设备的DPI

    @media screen and (resolution: 326dpi) { /* */ }
    @media screen and (min-resolution: 96dpi) { /* */ }

    (4)宽高比

    @media screen and (device-aspect-ratio: 16/9) { /* */ }

     5、其他的 @ 规则

    (1)@import “test.css”;     引入其他的样式表,可以将长而复杂的样式表剪短用这个引入,更加方便管理

    (2)@font-face   用来引入我们想要使用的字体

    @font-face {
        font-family: "font of all knowledge";
        src: url(fontofallknowledge.woff);
    }
    p { font-family: "font of all knowledge", arial, sans-serif; }
  • 相关阅读:
    python中将集合进行切割的方法
    Tomcat单库多实例部署
    (二) storm的基本使用
    工作流表结构解析
    [TCO 2012 Round 3A Level3] CowsMooing (数论,中国剩余定理,同余方程)
    [HEOI 2013 day2] 钙铁锌硒维生素 (线性代数,二分图匹配)
    [HEOI 2013 day2] SAO (树形动态规划)
    关于react和Angular的思考
    angular 中的modal
    从易到难,写一个JavaScript加载器之一
  • 原文地址:https://www.cnblogs.com/stanwuc/p/10469328.html
Copyright © 2011-2022 走看看