CSS学习笔记

层叠样式表 (Cascading Style Sheets)常用的属性。

CSS的重点和难点在:元素的位置。

语法

选择器,以及一条或多条声明。每条声明由一个属性和一个值组成。

CSS学习笔记_第1张图片

组合选择符

后代选择器(以空格  分隔)
子元素选择器(以大于 > 号分隔)
相邻兄弟选择器(以加号 + 分隔)
普通兄弟选择器(以波浪号 ~ 分隔)
上、右、下、左
上、左右、下
上下、右左

伪类

伪类选择元素基于的是当前元素处于的状态,或者说元素当前所具有的特性,而不是元素的id、class、属性等静态的标志。由于状态是动态变化的,所以一个元素达到一个特定状态时,它可能得到一个伪类的样式;当状态改变时,它又会失去这个样式。由此可以看出,它的功能和class有些类似,但它是基于文档之外的抽象,所以叫伪类。

与伪类针对特殊状态的元素不同的是,伪元素是对元素中的特定内容进行操作,它所操作的层次比伪类更深了一层,也因此它的动态性比伪类要低得多。实际上,设计伪元素的目的就是去选取诸如元素内容第一个字(母)、第一行,选取某些内容前面或后面这种普通的选择器无法完成的工作。它控制的内容实际上和元素是相同的,但是它本身只是基于元素的抽象,并不存在于文档中,所以叫伪元素。

伪类的语法:

selector:pseudo-class {property:value;}

CSS类也可以使用伪类:

selector.class:pseudo-class {property:value;}

  • anchor伪类

    a:link {color:#FF0000;} /* 未访问的链接 */
    a:visited {color:#00FF00;} /* 已访问的链接 */
    a:hover {color:#FF00FF;} /* 鼠标划过链接 */
    a:active {color:#0000FF;} /* 已选中的链接 */
    
  • first-child 伪类

    选择父元素的第一个子元素。

    p:first-child  选择器匹配作为任何元素的第一个子元素的 

    元素 p > i:first-child 选择相匹配的所有

    元素的第一个 元素 p:first-child i 选择器匹配所有作为元素的第一个子元素的

    元素中的所有 元素

字体

  • font-family 属性设置文本的字体系列。

  • font-style 主要是用于指定斜体文字的字体样式属性。

正常 - 正常显示文本 font-style:normal

斜体 - 以斜体字显示的文字 font-style:italic;

倾斜的文字 - 文字向一边倾斜(和斜体非常类似,但不太支持) font-style:oblique;

  • font-size 属性设置文本的大小。默认大小和普通文本段落一样,是16像素(16px=1em)。

像素

em

  • font-weight 字体的粗细

盒子模型

CSS学习笔记_第2张图片

元素的总宽度:

总元素的宽度=宽度(width)+左填充(Padding)+右填充+左边框(border)+右边框+左边距(margin)+右边距

元素的总高度:

总元素的高度=高度(height)+顶部填充+底部填充+上边框+下边框+上边距+下边距

div {
    width: 300px;//内容占据的空间
    border: 25px solid green;
    padding: 25px;
    margin: 25px;
}

300px (宽)
+ 50px (左 + 右填充)
+ 50px (左 + 右边框)
+ 50px (左 + 右边距)
= 450px

  • margin

    可能的值:auto、length(使用像素,pt,em等) 、%

    Margin可以使用负值,重叠的内容。

  • padding

    可能的值:length(使用像素,pt,em等) 、%

Display&Visibility

  • 块元素是一个元素,占用了全部宽度,在前后都是换行符。

    address , blockquote , center , dir , div , dl , fieldset , form , h1 , h2 , h3 , h4 , h5 , h6 , hr , isindex , menu , noframes , noscript , ol , p , pre , table , ul , li

  • 内联元素只需要必要的宽度,不强制换行。

    a , abbr , acronym , b , bdo , big , br , cite , code , dfn , em , font , i , img , input , kbd , label , q , s , samp , select , small , span , strike , strong , sub , sup ,textarea , tt , u , var

a
{
    display:block;//显示块元素的链接,让整体变为可点击链接区域(不只是文本),它允许我们指定宽度 
    width:60px;
}

行内元素设置margin无效果。

  • 可变元素(根据上下文关系确定该元素是块元素还是内联元素):

    applet ,button ,del ,iframe , ins ,map ,object , script

  • 利用CSS可以摆脱上面HTML标签归类的限制,自由地在不同标签/元素上应用需要的属性。

    主要用的CSS样式有以下三个:

    display:block – 显示为块级元素
    display:inline – 显示为内联元素
    display:inline-block – 显示为内联块元素,表现为同行显示并可修改宽高内外边距等属性

​ 我们常将所有 li 元素加上display:inline-block样式,原本垂直的列表就可以水平显示了。

span {display:block;} 把span元素作为块元素

隐藏元素 - display:none或visibility:hidden

visibility:hidden可以隐藏某个元素,但隐藏的元素仍需占用与未隐藏之前一样的空间。也就是说,该元素虽然被隐藏了,但仍然会影响布局。

Position

  • static 默认值,即没有定位,遵循正常的文档流对象。静态定位的元素不会受到 top, bottom, left, right影响。

  • relative 相对定位元素的定位是相对其正常位置。

    相对定位元素经常被用来作为绝对定位元素的容器块。

    h2.pos_left
    {
        position:relative;
        left:-20px;//从元素的原始左侧位置减去 20 像素。
    }
    h2.pos_right
    {
        position:relative;
        left:20px;//向元素的原始左侧位置增加 20 像素。
    }
    
  • absolute

    绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于

    absolute 定位使元素的位置与文档流无关,因此不占据空间。

    absolute 定位的元素和其他元素重叠。

  • fixed 元素的位置相对于浏览器窗口是固定位置。即使窗口是滚动的它也不会移动。

    Fixed定位使元素的位置与文档流无关,因此不占据空间。

    Fixed定位的元素和其他元素重叠。

  • sticky 基于用户的滚动位置来定位。

    粘性定位的元素是依赖于用户的滚动,在 position:relativeposition:fixed 定位之间切换。

    它的行为就像 position:relative; 而当页面滚动超出目标区域时,它的表现就像 position:fixed;,它会固定在目标位置。

    元素定位表现为在跨越特定阈值前为相对定位,之后为固定定位。

Overflow

overflow 属性可以控制内容溢出元素框时在对应的元素区间内添加滚动条。

visible 默认值。内容不会被修剪,会呈现在元素框之外。
hidden 内容会被修剪,并且其余内容是不可见的。
scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。
auto 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。
inherit 规定应该从父元素继承 overflow 属性的值。

Float

Float(浮动),会使元素向左或向右移动,其周围的元素也会重新排列。

一个浮动元素会尽量向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。
CSS学习笔记_第3张图片

如果你把几个浮动的元素放到一起,如果有空间的话,它们将彼此相邻。

清除浮动

元素浮动之后,周围的元素会重新排列,为了避免这种情况,使用 clear 属性。

clear 属性指定元素两侧不能出现浮动元素。

CSS中所有的浮动属性:

属性 描述 CSS
clear 指定不允许元素周围有浮动元素。 left right both none inherit 1
float 指定一个盒子(元素)是否可以浮动。 left right none inherit 1

水平&垂直对齐

  • 水平居中

水平居中对齐一个元素, 可以使用 margin: auto;。设置到元素的宽度将防止它溢出到容器的边缘。

元素通过指定宽度,并将两边的空外边距平均分配。

如果没有设置 width 属性(或者设置 100%),居中对齐将不起作用。

如果仅仅是为了文本在元素内居中对齐,可以使用 text-align: center;

  • 左右对齐(定位方式)

可以使用 position: absolute; 属性来对齐元素:

.right {
    position: absolute;
    right: 0px;
    width: 300px;
    border: 3px solid #73AD21;
    padding: 10px;
}

绝对定位元素会被从正常流中删除,并且能够交叠元素。

  • 左右对齐(float方式)
.right {
    float: right;
    width: 300px;
    border: 3px solid #73AD21;
    padding: 10px;
}

注意:如果子元素的高度大于父元素,且子元素设置了浮动,那么子元素将溢出,这时候你可以使用 “clearfix(清除浮动)” 来解决该问题。

  • 垂直居中对齐

    很多种方法,其一:

    • Padding

      .center {
          padding: 70px 0;
          border: 3px solid green;
      }
      
    • line-height

    • position 和 transform

  • 水平和垂直都居中

    使用 padding 和 text-align: center:

    .center {
        padding: 70px 0;
        border: 3px solid green;
        text-align: center;
    }
    

你可能感兴趣的:(css)