zoukankan      html  css  js  c++  java
  • 网页前端之CSS学习记录总结篇

    标签:

    块级标签block:div, p, h1-h6, ul, ol,li, dl, dt, dd,table,tr等,独占一行,可以设置宽高,默认是父标签的100%;
    行内标签inline:a,span ,strong,i,u,em等,在一行内显示,不可以设置宽高,默认是字体的大小;
    p标签自带边距margin 16px;body是8px;
    display将标签转化为行内或者块级标签;
    行内块标签inline-block:在一行显示,可以设置宽高,如input,image,textarea,td标签
    在网页中,行内转块和行内块是非常实用的;
    块级标签可以嵌套其他的,如div包罗万象,但是P标签尽量不要去嵌套div,浏览器渲染会将两标签独立;
    行内标签不要嵌套块级标签,可以嵌套行内块标签,如a标签嵌套img标签;
    当行高line-height等于高度height时,文本会垂直居中(上下padding要相同);
    text-align:center 水平居中
    text-decoration:none 无文本装饰,去除a标签的下划线,underline 下划线,overline上划线,linethrough删除线
    del也是删除线;
    a标签要嵌套img则应将a转化为行内块;

    高级选择器:
    子代选择器 #id>box{};只限于儿子们
    后代选择器 #id box{}; div div p{} ; div p .class_name{} ;
    交集选择器 div.active{} 没空格哦,选择的是类名为active的div,不是其他的div,
    并集(组合)选择器 p,yl,ol,body{margin:0;padding:0},即重置样式;
    兄弟选择器 h1+p{} h1下面的紧挨着h1的p标签,也可组合使用 #test>h1+p{}
    伪类选择器
    属性选择器 a[title]{font-size:30px;},选择了所有具有title属性的a元素,并将字体大小设置为30px;
    a[title="lyf"]{color:Red;}选择title值为lyf的a元素,并将字体颜色设置为红色;

    css基础选择器:
    #id{}:id选择器,id唯一
    .类名{}:类选择器,可以重复类名,类名也可由多个名称中间加空格组成
    标签{}:标签选择器,比如a标签去下划线
    尽可能的用class,除非极特殊的情况可以用id,class属性交给css使用,id属性交给js使用。

    盒子模型

    padding的值如果是两个,则表示上下,左右,三个表示上,左右,下,四个表示上右下左,顺时针方向;width和heigth是指内容的宽度和高度;margin:外边距padding 就是内容与边框的空隙。而margin则是模块与模块的空隙

    ,一个盒子模型的实际宽度为:左右margin+左右border+左右padding+内容宽度width;

    子盒子水平居中:
    子盒子是有宽度的,则子盒子直接设置margin :0 auto可居中;span可先转为块或行内块,再设置宽,再margin :0 auto;
    父盒子设置text-align:center,子盒子span直接居中,子盒子div转为行内块或者行内后可居中;
    子绝父相来调节子盒子偏移量水平居中;
    父盒子设置display: flex;justify-content: center;可实现子盒子居中。
    子盒子垂直居中:
    子绝父相来调节子盒子偏移量垂直居中;
    父盒子设置display: flex;align-items: center;
    子盒子水平垂直居中:
    父盒子设置display:flex;子盒子设置margin:auto;可实现水平垂直居中。

    a标签有4种伪类(即对应四种状态),如下:

    :link “链接”:超链接点击之前
    :visited “访问过的”:链接被访问过之后,不一定是本页面访问过,之前访问过,留在缓存里的都认为是访问过
    :hover “悬停”:鼠标放到标签上的时候
    :active “激活”: 鼠标点击标签,但是不松手时。

    在 CSS 定义中,a:hover 必须被置于 a:link 和 a:visited 之后,才是有效的。
    在 CSS 定义中,a:active 必须被置于 a:hover 之后,才是有效的。
    伪类名称对大小写不敏感。

    a{}和a:link{}的区别:
    a{}定义的样式针对所有的超链接(包括锚点)。
    a:link{}定义的样式针对所有写了href属性的超链接(不包括锚点)。
    如果同时需要,我们一定要将a标签写在前面,将:link、:visited、:hover、:active这些伪类写在后面。

    伪类:

    :focus伪类是某个标签获得焦点时的样式(比如某个输入框获得焦点);
    :first-child 伪类:可以使用 :first-child 伪类来选择元素的第一个子元素。
    p:first-child {color: red;} 选择器匹配任何元素的子元素中的第一个p 元素;
    p > i:first-child {font-weight:bold;} 选择器匹配所有 <p> 元素中的第一个 <i> 元素;
    p:first-child i {color:blue;} 选择器匹配任何元素的子元素中的第一个p 元素下的所有 <i> 元素;

    伪元素:
    ::first-line 伪元素用于向文本的首行设置特殊样式。只能用于块级元素。
    p:first-line{color:#ff0000;font-variant:small-caps;}
    ::first-letter 伪元素用于向文本的首字母设置特殊样式:
    p.article:first-letter{color: #FF0000;}
    :before伪元素可以在元素的内容前面插入新内容:
    h1:before{content:url(logo.gif);}
    :after伪元素可以在元素的内容之后插入新内容。

    display:none隐藏标签不占位置,visibility:hidden占位置;

    文本缩进:text-indent:2em;

    盒子边框border:
    border: 3px solid blue;
    border-3px 5px 7px 9px; 盒子各边宽度,顺时针
    border-style:solid dotted dashed double; 实线,点线,虚线,双线
    border-color:blue;
    border-top:1px solid #000;

    什么是浮动float?
    脱离文档流,也就是将元素从普通的布局排版中拿走,其他盒子在定位的时候,会当做脱离文档流的元素不存在而进行定位。
    浮动可以使得元素按指定方向排列,直到遇到父元素的边界或另一个浮动元素停止。

    浮动的特性有哪些?
    1.脱标;2.贴边;3.字围;4.收缩;5.浮动后不区分行内、块状元素,都能够设置宽高。
    所谓收缩:一个浮动元素如果没有设置width,那么自动收缩为文字的宽度(这点和行内元素很像)。

    浮动所带来的问题:

    浮动的框可以左右移动,直至它的外边缘遇到包含框或者另一个浮动框的边缘。浮动框不属于文档中的普通流,当一个元素浮动之后,不会影响到块级框的布局而只会影响内联框(通常是文本)的排列,正是因为浮动的这种特性,导致本属于普通流中的元素浮动之后,包含框内部由于不存在其他普通流元素了,也就表现出高度为0(高度塌陷)。在实际布局中,往往这并不是我们所希望的,所以需要清除浮动元素,使其包含框表现出正常的高度。

    清除浮动的方式: 

    父盒子设置固定高度 :应用:网页中盒子固定高度区域,比如固定的导航栏。缺点:使用不灵活,后期不易维护

    内墙法:  在浮动元素的后面加一个空的块级元素 ,缺点:结构冗余

    伪元素清除法:内墙法的升级,避免冗余的块级元素出现,在需要清除浮动的盒子里添加类的值clearfix即可。

    .clearfix:after{
        content:'';
        display: block;
        clear: both;
    }

    overflow:hidden:

    当一个元素设置了overflow:hidden|auto|scroll属性之后,它会形成一个BFC(Block Formatting Context)区域,叫做块级格式化上下文。BFC只是一个规则。它对浮动定位都很重要。浮动定位和清除浮动只会应用于同一个BFC的元素。浮动不会影响其它BFC中元素的布局,而清除浮动只能清除同一BFC中在它前面的元素的浮动。

    总结:只要我们让父盒子形成BFC的区域,那么它就会清除区域中浮动元素带来的影响。

    但是当我们对浮动元素的父盒子设置了overflow:hidden之后,确实能够使得父盒子有了高度,即最大的浮动元素高度,然而浮动元素的内容若超出了最大高度时就会被隐藏哦!也需谨慎使用!

    BFC布局规则

    1.内部的Box会在垂直方向,一个接一个地放置。

    2.Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Boxmargin会发生重叠

    3.每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。

    4.BFC的区域不会与float 元素重叠。

    5.BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。

    6.计算BFC的高度时,浮动元素也参与计算

    相对定位position:relative:

    如果没有定位偏移量,对元素本身没有任何影响;

    不使元素脱离文档流;

    偏移后会覆盖其他元素,但是原来的坑还占着。

    绝对定位position: absolute:

    脱离文档流;

    使得行内元素能设置宽高(让行内具备块特性);

    使得块元素默认宽根据内容决定(让块具备行内特性);

    如果前辈元素没有relative,absolute,fix中的任一个,则定位基准为body;

    如果前辈元素有relative,absolute,fix中的任一个,则定位基准为最靠近自身的那个拥有定位的前辈元素。

    应用较多的为“子绝父相”,子元素为absolute,父元素为relative。

    固定定位:

    它跟绝对定位基本相似,只有一个主要区别:绝对定位固定元素是相对于html根元素或其最近的定位祖先元素,而固定定位固定元素则是相对于浏览器视口本身。这意味着你可以创建固定的有用的网页效果,比如固定导航栏、回到顶部按钮,小广告等。

    z-index:

    当元素出现压盖时,是什么决定哪些元素出现在其他元素的上面呢?是z-index.使用z-index有以下几个规则:

    1. z-index只应用在定位的元素,默认z-index:auto;
    2. z-index取值为整数,数值越大,它的层级越高
    3. 如果元素设置了定位,没有设置z-index,那么谁写在最后面的,表示谁的层级越高。
    4. 从父现象。通常布局方案我们采用子绝父相,比较的是父元素的z-index值,哪个父元素的z-index值越大,表示子元素的层级越高。

    border-radius:

    border-radius:15px 同时将每个圆角的“水平半径”(hrizontal radius)和“垂直半径”(vertical radius)都设置为15px;

    border-radius可以同时设置1到4个值。如果设置1个值,表示4个圆角都使用这个值。如果设置两个值,表示左上角和右下角使用第一个值,右上角和左下角使用第二个值。如果设置三个值,表示左上角使用第一个值,右上角和左下角使用第二个值,右下角使用第三个值。如果设置四个值,则依次对应左上角、右上角、右下角、左下角(顺时针顺序)。

    border-radius还可以用斜杠设置第二组值。这时,第一组值表示水平半径,第二组值表示垂直半径。第二组值也可以设置1到4个值,应用规则与第二组值相同。

    border-radius:10px 20px 30px / 40px 50px;

    box-shadow 阴影  :

    box-shadow:3px 3px 20px red inset 表示水平竖直方向为3px,模糊距离为20px,阴影颜色为红,内阴影。有时盒子弄个阴影还挺好看的。我的这个博客页面就有很多阴影。

    未完待续...

  • 相关阅读:
    搜书网站
    在Ubuntu 18.04上安装Git
    git 解决每次更新代码都要输入用户名密码
    《程序员修炼之道》笔记(四)
    《程序员修炼之道》笔记(三)
    《程序员修炼之道》笔记(二)
    《程序员修炼之道》笔记(一)
    学习MVC之租房网站(六)-用户登录和权限控制
    学习MVC之租房网站(五)-权限、角色、用户管理
    [翻译] 如何更好地编写单元测试(下)
  • 原文地址:https://www.cnblogs.com/wangyi0419/p/11701215.html
Copyright © 2011-2022 走看看