css这么玄学的东西,背后一定有其原理可以学习。w3c就是最好的网站,知识点要反复记忆,经典案例反复练习,才能达到标准的css水平。

css就是 选择器+ 属性。选择器有很多种,属性会更多。但是归根到底就是选择器+属性。属性里面分基础和中等,基础属性只需要记忆就好,但是高级属性则需要重点加强记忆。

css里面最重要的概念就是元素类型。+ 显示,浮动,定位。盒子模型就是基础盒子,浮动和定位就是用来摆放盒子。

 

一 基础模块:

基础模块主要有8个常用知识点,其中前6个都比较简单,边框和内外边距有需要注意的点,还会引入盒子模型的概念。此外还有5 个html标签特殊使用方法: 图标,链接,列表 ,表单,表格。

1.css代码语法: 选择器+ {属性值:值};选择器就是选择的对象。{}就是声明的意思。和对象不同,使用;分开。

 a.css内联样式:标签+style属性来定义。

<p style="color:red" ></p>

b. 嵌入式样式

c.外部引用样式:rel="stylesheet" type="text/css"是固定不可以修改的。

<link href="base.css" rel="stylesheet" type="text/css" />

  

2.选择器: 

 a.标签选择器:html里面的标签。

 b.class选择器:class类定义,. + class调用。<span class="stress bigsize">,定义多个class名。

 c.id选择器:id类定义,# + id调用。<span id="stressid bigsizeid">不能定义多个id名

 d.通用选择器:*选择所有的选择器。

除了以上3个选择器以外,还有一下的关系选择器。

a.子类选择器: (>)。只有第一代后代。(div>p 父元素使div的所有p)

b.后代选择器:空格。 空格作用域元素所有后代。(div p div元素内的所有p)

c.分组选择器:(,)都好。可以给多个标签元素设置同意样式。

d.相邻兄弟选择器(+):兄弟的同级必须拥有相同的父元素。(div>p 紧随着div之后的元素)

e.通用兄弟选择器(~)

 

权重:

1权值相同的时候,选择后面的。

2权值不相同的时候,先选择等级高等级,如果同等级,选择数值高的。

3 !important则是无限高。 background-color: yellow !important;  yellow 和分号之间先加入!important;

权值等级划分, 一般来说是划分4个等级:

    第一等级:代表 内联样式,如 style="",权值为 1,0,0,0;

    第二等级:代表 ID选择器,如 #id="", 权值为 0,1,0,0;

    第三等级:代表 class  |  伪类  |   属性 选择器,如 .class | :hover,:link,:target | [type], 权值 0,0,1,0;

    第四等级:代表 标签 |   伪元素 选择器,如 p | ::after, ::before, ::fist-inline, ::selection, 权值 0,0,0,1;

    此外,通用选择器(*),子选择器(>), 相邻同胞选择器(+)等选择器不在4等级之内,所以它们的权值都为 0,0,0,0;

 

3.常见样式:

a.文字排版: font 

1.字体:font-family:'宋体‘,
2.大小font-size:12px;
3.颜色color:666;
4.斜体:font-style:italic; 5.下划线:text-decoration:underline; 删除线:line-through;
font字体属性简写:font-size,font-family必须写;

b.背景:background

1.指定元素的背景色 background-color: color;

2.背景照片 background-image:url(" ")/ 'image/1.png')

3.背景重复 background-repeat:repeat-x,repeat-y; 只在水平或者垂直方向重复。no-repeat不重复。

4.background-attachmen:fix固定(永远固定在一个地方),scroll滚动。

5.background-position:right,top;

简写background:颜色,imgae位置,重复,位置。

c.轮廓: outline:轮廓是在元素边框之外绘制的,可能会和其他内容重复。并不是尺寸元素的一部分。

1.轮廓形状outline-style: dotted 点状轮廓
2.轮廓宽度 outline-width:2px;
3.轮廓颜色:outline-color:red;
4.轮廓偏移:outline-offset:25px;在指定边框外。
轮廓简写:outline: 5px solid yello;

d.文本排版: text

水平对齐:text-align:center。center:把文本排列到中间。justify:实现两端对齐文本效果。inherit:规定应该从父元素继承text-align属性的值
垂直对齐:vertical-align:middle.bottom。 vertical:top; 
文本装饰:text-decoration:none。line-through。
文本转化:text-transform:uppercase; lowercase; capitalize(首字母大写)
文本阴影:text-shadow:2px(水平阴影),2px(垂直阴影);

e.段落排版:

1缩进:缩进2个文字的空白:line-indent:2em

2行间距:行高:line-height:1.5em

3中文文字间隔:letter-spacing:50px。英文文字间隔:word-spacing:50px;

f.不透明度:

opacity:0完全透明,1完全不透明。
img:hover {opacity: 0.1; }和hover配合在一起使用。

g.边框,内边距,外边距(盒子模型):

0 宽度和高度:height,width。max-width,max-height。

1 边框。border简写:border-width border-style border border-color. border-radius 
top,right,bottom,left; top,right+left,bottom;
top+bottom,right+left;
2 外边距 :margin: margin的值:auto(浏览器来计算外边距),px,%,inherit。 margin属性设置为auto,元素在容器水平居中,元素指定宽度,剩余空间在左右边界(父元素容器)平均分配,必须给宽度。 margin外边距合并:可以让段落之间上下边距合并在一起。
a.当两个垂直的外边距相遇,形成更大的外边距。合并的高度=max[margina,marginb] b.如果是嵌套的盒子,内部的div和外部的div是处于同一个行,所有会发生内外边距重合,如果需要上边距,给父元素内填充padding-top;
c.只有普通文档流的垂直外边距才会合并。浮动和绝对定位外边距不会合并。

3 内边距 :padding:
padding的值:px,%,inherit;

w3c标准盒子模型box-sizing:content-box;width=content;

怪异盒子模型box-sizing:border-box;width=content+padding+border;

 

补充指定样式:

1.伪类选择器:定义元素的特殊状态(: )冒号。因为可以给html不存在的标签设置样式,hover:鼠标滑过时候。1悬停状态。2 已经访问和未经访问的样式。3 设置元素获得焦点样式。:hover,:active(点击的时候),:visited,:link,:disabled(被禁用的input),:cheked(被选择的input)。nth-child(2)。

2.伪元素:指定元素部分的样式。元素的首字母样式,插入内容元素内容之前或者之后

::after。::before。每一个p元素之前插入内容。

::first-letter first-line。选择每一个p元素的首字母,首行。

::selection。选择用户选择的元素部分。

 

4.样式的继承和覆盖性

  继承 ,层叠。

 

二 中级模块:

1.元素类型:

css的核心就是,把装好样式的标签,进行布局。以上都是单纯css的知识,但是下面的会和html标签结合起来。 每一个HTML元素都有默认的display值,取决于元素类型。

a.行内元素特性:inline

2个:1a(超链接标签),2span(为了设置单独样式的标签) br ,i,em,strong ,label 

1.和其他元素都在一行上。(在一行)
2.元素 高度宽度,行高, 顶部和底部边距 不可以设置。(不设宽高)
3.元素的宽度就是包含文字和图片的宽度,不能改变。(宽度等于文字宽度)

b.块级元素:block。

6个:1 div, 2 p(段落),3h(标题),4 ol,ul li(无序,有序列表),5table(表格),6form()。
1.一个块级别从新的一行开始,独占一行。
2.高度,宽度,行高都已经顶和底部都可以设置。设置宽高。
3.宽度不设置,宽度等于父容器。

c.行内块元素:inline-block。

2个:1图片img,2 input(表单)
1.和其他元素在一行。有行内元素的1。
2.可以设置宽高。有块元素的2。

给他们分别加上不同的background,给他们设定一定的width和height你就可以清晰的知道他们属于什么。

标签本身有默认的display,但三者之间可以使用display:属性。自由的切换。

 

2 布局。主要涉及元素布局,有4个非常重要的属性:显示display,position定位,浮动float,溢出overflow。display确定元素的分类,position确定了定位,溢出,浮动。此外,这个单元会有重点的案例需要学习。还需要理解BFC,IFC的概念。

 

0 BFC,IFC

a.流动模型:默认情况下都会这样布局。

特点:1 块级元素,自上而下垂直分布,因为默认情况下块级宽度100%,以行的形式占据,主要是块级元素宽度继承父级。2内联元素从左到右显示。

display值。

line:水平菜单:li{display:inline};

block:垂直链接:a{display:block}

inline-block: 可以填充padding的垂直距离。li{display:inline-block;padding:20px;}一行。且有高度。

none: h1.hidden{display:none};会影响布局。 visibility:hidden不会影响布局。

 

b. 浮动模型:

1什么是浮动?

答:float创建浮动框,将其移动到左边右边,直到左边缘右边缘 触及包含块,或者另一个浮动框的边缘。

 

2 浮动的特性?

答:

1 所有元素都可以浮动。

2 浮动元素会脱离标准流:(1) 浮起来,移动到指定位置(2)浮动的盒子不在保留原先的位置。(3)一个盒子一个元素浮动了,理论上其他兄弟元素也要浮动,防止重叠。浮动只会影响后面的标准流,不会影响前面的标准流。

3 浮动元素具有行内块元素的特点:(1) 浮动元素会一行内显示,(如果浏览器变小了,会换行),并且元素顶部对齐。(2)span也具有宽高,行内元素有浮动,不需要转化就有宽度和高度。块级盒子默认宽度和父亲一样宽,但是添加浮动后,它的大小根据内容决定。浮动宽度如何设定。

(3)块级元素的宽度本来等于父元素的宽度,设置浮动一定要设置块元素的宽度(图片和表单本身就有宽度),且浮动几个元素加起来小于容器元素的宽度。行内块如img的宽度为本身。

 

3 浮动使用场景?

答: a.开始使用:文字混排效果,段落之间插入照片等。 img浮动,后面是p标签那么会漂浮效果,如果是div盒子那么则插入到下面。

b. 网页布局:标准流父元素上下排版,之后内部子元素采取浮动排列左右位置,复合网页布局第一准则。浮动元素和标准父级搭配使用。.box li {} li标签1 .box 10 。 .box .class{} 20.li

 

4 浮动会有什么影响?

1 浮动框不属于文档流中的普通流,当元素浮动之后,不会影响块级元素的布局,只会影响内联元素布局。浮动的元素,会影响后面标准流,所有需要清楚浮动。

        .upper {
            height: 30px;
            float: left;
            height: 30px;
            width: 30px;
            border: 3px solid #73AD21;
        }
        .outer {
            border: 1px solid pink;
        }
    </style>
</head>
<body>
    <div class="upper">

    </div>
    <div class="outer">

    </div>

 清楚浮动的办法:

1额外标签法:如果是内部:在内部的末尾加上一个div,clear。<div style="clear:both"></div>.

或者在被浮动影响的盒子加上clear  :   left  /  right 。 

闭合浮动。孩子会漂浮,很皮。在孩子后面添加一个门,进行闭合。

2隐藏溢出:如果一个元素比包含它的元素高。 父级元素添加overflow。hidden、 auto 或 scroll 。

溢出隐藏。外边距合并。

3 父级after伪元素:清除方法::after 方式是额外标签法的升级版。 

额外标签法的升级: 给父元素添加一个.clearfix属性,+:after.。

4  父级双伪元素:清除浮动:给父元素添加添加一个.clearfix属性。 前面添加一个,后面添加一个。

 

父元素高度不设定(也就是0),如果父元素包含正常块元素的话那么会撑开父元素。但是如果父元素没有包含块元素,包含的是浮动的,脱离了文档流,父元素高度就会为0。

用 after伪元素清除浮动。其实关于清除浮动的代码主要就是围绕clear:both和如何隐藏content。

 

    <style>
        .one {
            background-color: violet;
        }
        .inner {
            float: left;
            height: 300px;
            width: 100px;
            background-color: wheat;       
        }
    .clearBoth {
        clear: both;
    }
    </style>
  <div class="one"> 
            <div class="inner clearfix">
            </div>
    </div>

 

c. 层模型:

 就像PS里面每一层图片编辑功能,每一层都能精准定位操作。

top、bottom、left 和 right 属性设置之前,必须设置position属性。

 a.绝对定位(相对于最近的定位祖先元素):最近的具有定位属性的父元素进行定位,如果不存在,则相对于body,也就是浏览器窗口。(父元素定位属性除了static,一般都是relative,子绝,父相)

b.相对定位:reletive相对于正常位置。relative。

c.固定定位 fixed。相对于视口定位。sticky粘贴元素。

d.static静态默认的。

 定位的层叠顺序:z-index。z就是z轴。

1 只有加了定位属性才有层顶顺序。

2z-index:数值可以是正,负数,0。默认是auto。不能加单位。

3 如果属性相同,那么后来者居上。

4例子:个盒子都是绝对定位,叠加在一起,

 

1 绝对定位居中:

+了absolute的盒子不能通过margin:0 auto水平居中。

水平垂直居中。

绝对定位:left50%。-定位盒子宽度的一半。

left:50%.让盒子左侧移动到父级元素的水平中那个心位置。

在盒子向左移动自身宽度的一半。

margin-left:-100px;margin的负值就是让自己向左边走。

margin-top:-100px margin-top:-100px;

 

2

行内元素添加绝对或者固定定位,可以直接设定宽高。

块级元素加绝对或者固定定位,如果不给宽度或者高度,默认大小是内容的大小。不在是100%的宽度。

 

3浮动元素是不同的,只会压住它下面标准流的盒子,但是不会压住下面标准流盒子里面的文字和图片。浮动产生目的就是文字环绕效果。

如果是absolute,会压住标准流的所有内容。

 

 d.flex布局。

 

 

e.布局案例:

导航栏:

下拉菜单:

 

对齐:

 

1line-height对单行文本进行垂直居中。

text-align: center;文本居中!

2 padding垂直居中。

3伪元素before实现cs垂直居中。

 

4 绝对定位居中:

+了absolute的盒子不能通过margin:0 auto水平居中。

水平垂直居中。

绝对定位:left50%。-定位盒子宽度的一半。

left:50%.让盒子左侧移动到父级元素的水平中那个心位置。

在盒子向左移动自身宽度的一半。

margin-left:-100px;margin的负值就是让自己向左边走。

margin-top:-100px margin-top:-100px; 也可以写transform。

 绝对定位居中:也可以写transform。

5 flex布局。

6 display:table-cell 和 vertical-align 4 verticle-align

7隐藏节点实现css垂直居中

 

http://www.dagoogle.cn/n/704.html

  

https://www.jianshu.com/p/7bbc4860a45c

  

 

 

 

三 css3:

border, 阴影,2D转换,3D转化,过渡,动画,此外还有分页,多列用户界面等多个案例。需要会背会默写。

2D:

3D:

过渡:

动画:

案例:

  1分页:

  2多列:

flexbox。

 

posted on 2021-07-16 09:36  程序员草莓  阅读(97)  评论(0编辑  收藏  举报