我的html系统总结笔记

下面是我最近重新整理的html笔记,如有问题欢迎指出~

HTML系统性总结

基础

1.实体

&实体的名字;
      空格******
    > 大于号******
    < 小于号******
    © 版权符号

2.meta标签

meta主要用于设置网页中的一些元数据,元数据不是给用户看,还要用来避免乱码
    charset 指定网页的字符集
    name 指定的数据的名称
    content 指定的数据的内容


    name常用
		keywords:对应content是搜索引擎搜索出来的文字关键字
			keywords 表示网站的关键字,******可以同时指定多个关键字,关键字间使用,隔开
            <meta name="Keywords" content="网上购物V,相机,数码,配件,手表,存储卡,京东"/>
            <meta name="keywords" content="网购,马逊,卓越亚马逊,亚马逊中国,joyo,amazon">
		description:content是网站自我结束
			description 用于指定网站的描述
            <meta name="description" content="京东JD.COM-您提供愉悦的网上购物体验!"/>
            网站的描述会显示在搜索引擎的搜索的结果中
		title:content是搜索超链接上文字显示
			title标签的内容会作为搜索结果的超链接上的文字显示 
    	


    补充:将页面重定向到另一个网站	3是3秒后跳转,url和3连着
	<meta http-equiv="refresh" content="3;url=https//www.baidu.com">

3.标题标签

h1 ~ h6 一共有六级标题		从h1~h6重要性递减,h1最重要,h6最不重要	一般情况下标题标签只会使用到h1~h3

标题标签都是块元素
p也是一个块元素


【em稍微加重(字体稍微倾斜),strong强调(字体加粗)】
em标签用于表示语音语调的一个加重	<p>今天天气<em></em>不错!</p>
strong表示强调,重要内容!  


【总结:用于引用别人的话   blockqute长引用(换行)   q短引用(不换行)】
blockquote 表示一个长引用【换行】
	鲁迅说:<blockquote>这句话我是从来没有说过的!</blockquote>
q表示一个短引用【不换行】
	子曰<q>学而时习之,乐呵乐呵!</q>

小标题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pIRYusJq-1611721092549)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210125164729398.png)]

4.元素

块元素---在网页中一般通过块元素来对页面进行布局	
	块元素中基本上什么都能放	
	p元素中不能放任何的块元素【会自动修正所以运行正常】
行内元素---行内元素主要用来包裹文字
【一般情况下会在块元素中放行内元素,而不会在行内元素中放块元素】

5.布局标签

header 表示网页的头部
main 表示网页的主体部分(一个页面中只会有一个main)
footer 表示网页的底部


nav 表示网页中的导航
aside 和主体相关的其他内容(侧边栏)
article 表示一个独立的文章
section 表示一个独立的区块,上边的标签都不能表示时使用section


【span 行内元素,没有任何的语义,一般用于在网页中选中文字】
【div可以代替上面所有div是块】
div 没有语义,就用来表示一个区块,目前来讲div还是我们主要的布局元素

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ub5JZkhK-1611721092554)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210125165450901.png)]

6.列表

【列表之间可以互相嵌套】
1、有序列表ol
2、无序列表ul
3、定义列表dl

<ol>
    <li>有序</li>
</ol>



<ul>
    <li>无序</li>
</ul>



<dl>
    <dt>结构</dt>
    <dd>结构表示网页的结构,结构用来规定网页中哪里是标题,哪里是段落</dd>
</dl>

7.超链接

【超链接是也是一个行内元素,在a标签中可以嵌套除它自身外的任何元素】
<a href="07.列表.html" target="_blank">超链接</a>
	target属性,用来指定超链接打开的位置
			_self 默认值 在当前页面中打开超链接
			_blank 在一个新的要么中打开超链接

【设id可以跳转到任意位置	#可以跳转顶部-】【在开发中可以将#作为超链接的路径的展位符使用 】
<a href="#">去顶部</a>
<a href="#bottom">去底部</a>
<a id="bottom" href="#">设置了底部id  当点击去底部就可以跳转到这里</a>


【可以使用 javascript:; 来作为href的属性,此时点击这个超链接什么也不会发生】
<a href="javascript:;">这是一个新的超链接</a>


补充的技巧:例如<br*n>就可以快速得到n个换行

8.图片标签

【img这种元素属于替换元素(块和行内元素之间,具有两种元素的特点)【当成行元素】】
<img src="./img/1.gif" alt="松鼠">
    src 属性指定的是外部图片的路径
    alt 图片的描述,
		【图片不显示出现字,alt文字是方便搜索引擎去搜索引用】
		【如果不写alt属性则图片不会被搜索引擎所收录】
    width 图片的宽度 (单位是像素)
    height 图片的高度     宽度和高度中如果只修改了一个,则另一个会等比例缩放

常见图片格式
使用原则:效果一样用小的,效果不一样用效果好的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iael5vyy-1611721092563)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210125172320451.png)]

9.内联框架

<iframe src="https://www.qq.com" width="800" height="600" frameborder="0"></iframe>
	src 指定要引入的网页的路径
    frameborder 指定内联框架的边框		frameborder="0"【0表时没有,1表示有边框】

10.音频视频

音频
【默认情况下不允许用户自己控制播放停止,加controls允许播放】
<audio src="./source/audio.mp3" controls autoplay loop></audio>
	controls 是否允许用户控制播放【无值】
    autoplay 音频文件是否自动播放【true/autoplay】
            - 如果设置了autoplay 则音乐在打开页面时会自动播放
              但是目前来讲大部分浏览器都不会自动对音乐进行播放 【第一次不会播放】
    loop 音乐是否循环播放【true/loop】


除了通过src来指定外部文件的路径以外,还可指定多个source,
不支持的浏览器会显示文字
依次选择,第一个可以就使用否则下一个
【使用embed IE8可以支持,必须指定width height  type要指定】
<audio controls>
    对不起,您的浏览器不支持播放音频!请升级浏览器!
    <source src="./source/audio.mp3">
    <source src="./source/audio.ogg">
    <embed src="./source/audio.mp3" type="audio/mp3" width="300" height="100">
</audio>
视频
<video controls>
    <source src="./source/flower.webm">
    <source src="./source/flower.mp4">
    <embed src="./source/flower.mp4" type="video/mp4">
</video>


【也可以引入外网视频】
<iframe frameborder="1" src="https://v.qq.com/txp/iframe/player.html?vid=b00318l66nt" allowFullScreen="true" width="500" height="300"></iframe>

CSS

网页分成三个部分:
    结构(HTML)
    表现(CSS)
    行为(JavaScript)
    


第一种方式(内联样式,行内样式):
	<p style="color: red; font-size: 60px;">今天天气真不错!</p>
第二种方式(内部样式表)
	<style>
        p{color: green;font-size: 50px;}
    </style> 
第三种方式 (外部样式表) 最佳实践
	<link rel="stylesheet" href="./style.css">



常用选择器
1.元素选择器		标签名{}
	p{color: red;}
2.id选择器		 #id属性值{}		使用id不会重复的
	#red{color: red;}
3.类选择器		.class属性值		class是可以重复的,标签class可以有多个名字
	.blue{color: blue;}
4.通配选择器		*	
	*{color: red;}



复合选择器
1.交集选择器【条件:.同时  要同时满足】【集选择器中如果有元素选择器,必须使用元素选择器开头】
    div.red{font-size: 30px;}	//即是div又是red,即满足1又满足2	
    .a.b.c{color: blue;}	//满足有class  :a b c
2.选择器分组(并集选择器)【条件:,或者 只要一个满足】
	#b1,.p1,h1,span,div.red{color: green;}



关系选择器
1.子选择器(选子)         父元素 > 子元素
	//如果指定设定一个class  class叫box   找div下叫box的----交集选择器		然后再找span
	div.box > span{ color: orange;}
2.后代选择器(所有后代)   祖先 后代   注意中间空格
	div span{color: skyblue;}
3.下一个兄弟             前+下一个	
	p + span{color: red;}	//选中p 后面的零接的span
4.下面所有兄弟           兄~弟  【同级】
	p ~ span{color: red;}



属性选择器
[属性名]        选择含有指定属性的元素					    p[title]{ }
[属性名=属性值]  选择【含有】指定属性【和属性值】的元素	    p[title=abc]{} 
[属性名^=属性值] 选择属性值【以指定值开头】的元素				p[title^=abc]{} 
[属性名$=属性值] 选择属性值【以指定值结尾】的元素				p[title$=abc]{ }
[属性名*=属性值] 选择属性值中【含有某值的元素】的元素




伪类选择器【一般是:开头】【伪类用来描述一个元素的特殊状态】
    【根据所有的子元素(所有元素的第一个)进行排序】
    :first-child 第一个子元素
		例子:ul > li:first-child{ color: red;}
    :last-child 最后一个子元素
		例子:ul > li:last-child{color: red;}
    :nth-child() 选中第n个子元素		:nth-child(n)全选	
        n 第n个 n的范围0到正无穷
        2n 或 even 表示选中偶数位的元素
        2n+1 或 odd 表示选中奇数位的元素
		例子:ul > li:nth-child(even){color: red;}
			 ul > li:nth-child(2n+1){color: red;} 

	【(同类型)元素中进行排序】
    :first-of-type
		例子:ul > li:first-of-type{color: red;}
    :last-of-type		
    :nth-of-type()

	【:not(:nth-of-type(3))	not里可以包含上面的这些】
	:not() 否定伪类	将符合条件的元素从选择器中去除
		例子:ul > li:not(:nth-of-type(3)){color: yellowgreen;}



a元素的伪类
:link 用来表示没访问过的链接(正常的链接)【没访问过】----只适用于a标签
	a:link{ color: red;}
:visited 用来表示访问过的链接【访问过】【只能修改链接的颜色】----只适用于a标签
	a:visited{color: orange;}
:hover 用来表示【鼠标移入】的状态----所有都可以用
	a:hover{ color: aqua;}
:active 用来表示【鼠标点击】----所有都可以用
	a:active{color: yellowgreen;}




伪元素选择器
伪类   :    特殊状态
伪元素 ::	  特殊位置【伪元素,表示页面中一些特殊的并不真实的存在的元素】
::first-letter 表示第一个字母
	p::first-letter{font-size: 50px;}
::first-line 表示第一行
    p::first-line{background-color: yellow;}
::selection 表示选中的内容
	p::selection{background-color: greenyellow;}
::before 元素的开始 【比我的第一个字母还靠前位置】
	//content表示在字母前还要添加的内容,content内容是无法选中的
	div::before{content: 'abc';color: red;}
::after 元素的最后	【比我的第一个字母还靠后位置】
	div::after{content: 'haha';color: blue;}
【before 和 after必须结合content属性来使用】
    div::before{content: '『';}
    div::after{content: '』';}



样式继承----我们为一个元素设置的样式同时也会应用到它的后代元素上	       了解即可
【并不是所有的样式都会被继承,比如背景相关的,布局相关等的这些样式都不会被继承】
【继承是发生在祖先后后代之间的【我们并不需要额外的设置一些,只要是祖先被设置了后代就都会有】】

样式继承图解:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SfHuMX4P-1611721092566)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210125220929261.png)]

选择器的权重【通过权重,可以避免发生样式冲突】
选择器的权重(高->低)
	内联样式         1,0,0,0		 1000		<style>
    id选择器         0,1,0,0		  100		  #id
    类和伪类选择器    0,0,1,0	    	10		  .class : ::
    元素选择器       0,0,0,1			 1		    div
    通配选择器       0,0,0,0			 0		     *
    继承的样式       没有优先级		 比0小
比较优先级时,需要将所有的选择器的优先级进行【相加计算,最后优先级越高,则越优先显示】
【分组选择器是单独计算的,逗号是一组 div,p,spane 单独计算,不会放在一起】
【越具体优先级越高】
【如果优先级计算后相同,此时则优先使用后写的样式】
【可以在某一个样式的后边添加 【!important】则此时该样式会获取到最高的优先级,甚至超过内联样式,慎用】 

        
        
        
        
长度单位:
    像素300px;
        - 屏幕(显示器)实际上是由一个一个的小点点构成的
        - 不同屏幕的像素大小是不同的,*****像素越小的屏幕显示的效果越清晰
        - 所以同样的200px在不同的设备下显示效果不一样

    百分比50%;【相对于父元素,父大就变大】
        - 也可以将属性值设置为相对于其父元素属性的百分比
        - 设置百分比可以使【子元素跟随父元素的改变而改变】

    em   10em;【相对于自字体,字大就变大】
        - em是相对于元素的字体大小来计算的
        - 1em = 1font-size
        - em会【根据字体大小的改变而改变】

    rem  10rem;【相对于根元素字体】
        - rem是相对于根元素的字体大小来计算
        

        
        
颜色单位:
    在CSS中可以直接使用颜色名来设置各种颜色
    比如:red、orange、yellow、blue、green ... ...
    但是在css中直接使用颜色名是非常的不方便

    RGB值:
        - RGB通过三种颜色的不同浓度来调配出不同的颜色
        - *****【R red,G green ,B blue注意是红绿蓝     普通三原色是红黄青】
        - 每一种颜色的范围在 *****0 - 255 (0% - 100%) 之间
        - 语法:RGB(红色,绿色,蓝色) 【rgb(0,255,255)】

    RGBA:【rgba(106,153,85,.5);  1表示完全不透明 0表示完全透明 .5半透明】
        - 就是在rgb的基础上增加了一个a表示不透明度
        - 需要四个值,前三个和rgb一样,第四个表示不透明度
        1表示完全不透明   0表示完全透明  .5半透明

    十六进制的RGB值:【#ffff00;		#ff0;】
        - 语法:#红色绿色蓝色
        - 颜色浓度通过  ***** 00-ff
        - 如果颜色两位两位重复可以进行简写  
        ***** #aabbcc --> #abc

    HSL值 HSLA值【hsla(98, 48%, 40%, 0.658);	0.658是透明度】
        H 色相(0 - 360)[圆盘颜色]
        S 饱和度,颜色的浓度 0% - 100%
        L 亮度,颜色的亮度 0% - 100%

layout

文档流特点
块元素:
    块元素会在页面中总会独占一行(自上向下垂直排列)
    块元素默认宽度是父元素的全部(会把父元素撑满)【例如:div占满】
    默认高度是被内容撑开(子元素)【div里的子沾满高】
行内元素:
	行内元素不会独占页面的一行,只占自身的大小
	行内元素在页面中左向右水平排列,如果一行之中不能容纳下所有的行内元素 则元素会换到第二行继续自左向右排列
	默认宽度和高度都是被内容撑开


盒模型
    内容区(content)
    内边距(padding)
    边框(border)
    外边距(margin)	

	内容区【width height用于设置内容区的大小】【整个盒子大小要考虑边框】

	边框---属于盒子边缘,边框里边属于盒子内部,出了边框都是盒子的外部
        border-width边框的宽度
			四个值:上 右 下 左【顺时针】
            三个值:上 左右 下
            两个值:上下 左右
            一个值:上下左右

		border-xxx-width
                //xxx可以是 top right bottom left
        border-color边框的颜色
			规则和border-width一样
			border-color: orange red yellow green;
        border-style边框的样式【要设置边框一定要写这个】
			none 默认值,没有边框
			solid 表示实线
            dotted 点状虚线
            dashed 虚线
            double 双线
		border 简写,无顺序要求	border: solid 10px orange; 
        border-xxx
            border-top
            border-right
            border-bottom
            border-left
            border-top: 10px solid red;

	内边框padding【内边距的设置会影响到盒子的大小】
        padding-top
        padding-right
        padding-bottom
        padding-left
	【规则和border-width一样】
	【盒子的可见框的大小,由内容区 内边距 和 边框共同决定,所以在计算盒子大小时,需要将这三个区域加到一起计算】
	
	外边距margin【外边距不会影响盒子可见框的大小】
        margin-top上外边距,设置一个正值,元素会向下移动
        margin-right默认情况下设置margin-right【不会产生任何效果】
        margin-bottom下外边距,设置一个正值,其下边的元素会向下移动
        margin-left左外边距,设置一个正值,元素会向右移动

        margin也可以设置【如果是负值则元素会向相反的方向移动】
		【margin四个方向的外边距 ,用法和padding一样】
	【元素在页面中是按照自左向右的顺序排列的,如果左和上外边距则会移动元素自身,而设置下(下面没有东西就不移动)和右,外边距会移动其他元素】




盒子水平布局
    【元素在其父元素中水平方向的位置由以下几个属性共同决定】
        margin-left
        border-left
        padding-left
        width
        padding-right
        border-right
        margin-right

    【一个元素在其父元素中,水平布局必须要满足以下的等式】
    如果相加结果使等式不成立,则称为过度约束,则等式会自动调整【浏览器自动补充不满足的数】
    margin-left+border-left+padding-left+width+padding-right+border-right+margin-right
    = 其父元素内容区的宽度


    【通常我们设置auto:誰是auto就调誰 width默认auto】
    通常一下值设置为auto
        width
        margin-left
        maring-right
    如果将一个宽度和一个外边距设置为auto,则宽度会调整到最大,设置为auto的外边距会自动为0
    如果将三个值都设置为auto,则外边距都是0,宽度最大
    如果将两个外边距设置为auto,宽度固定值,则会将外边距设置为相同的值
    所以我们经常利用这个特点来使一个元素在其父元素中水平居中


    水平居中:左右设为auto
        width:xxxpx;
        margin:0 auto;【上下0 左右auto】




盒子垂直布局
	【如果子元素的大小超过了父元素,则子元素会从父元素中溢出】
	使用 overflow 属性来设置父元素如何处理溢出的子元素【处理溢出】
	
	overflow 
        visible,默认值 子元素会从父元素中溢出,在父元素外部的位置显示
        hidden 溢出内容将会被裁剪不会显示
        scroll 生成两个滚动条,通过滚动条来查看完整的内容
        auto 根据需要生成滚动条
        【自动水平或垂直方向的,都不需要都不生成】
	overflow-x: 【单独处理水平方向溢出】
    overflow-y:




外边距的折叠
	垂直外边界折叠【相邻的垂直方向外边距会发生重叠现象【1.相邻2.垂直方向】

	兄弟元素:
	【兄弟元素间的相邻垂直外边距会取两者之间的较大值(两者都是正值)】
	【兄弟元素之间的外边距的重叠,对于开发是有利的,所以我们不需要进行处理】
        特殊情况:
        如果相邻的外边距一正一负,则取两者的和
        如果相邻的外边距都是负值,则取两者中绝对值较大的

	父子元素:
	【父子外边距的折叠会影响到页面的布局,必须要进行处理】
	【设子元素了就相当于于设了父元素】
	【初步解决:要么padding、要么父元素加border改像素】




行内元素的盒模型
    行内元素不支持设置宽度和高度【宽度高度由内容决定】
    行内元素可以设置padding,但是垂直方向padding不会影响页面的布局
    行内元素可以设置border,垂直方向的border不会影响页面的布局
    行内元素可以设置margin,垂直方向的margin不会影响布局


超链接补充
	display 用来设置元素显示的类型
        inline 将元素设置为行内元素
        block 将元素设置为块元素
        inline-block 将元素设置为行内块元素  行内块,既可以设置宽度和高度又不会独占一行
        table 将元素设置为一个表格
        none 元素不在页面中显示【隐藏就没有了】
	visibility 用来设置元素的显示状态
        visible 默认值,元素在页面中正常显示
        hidden 元素在页面中隐藏 不显示,但是【依然占据页面的位置】




默认样式---通常情况,浏览器都会为元素设置一些默认样式
	重置样式表:专门用来对浏览器的样式进行重置的		直接引用拿来用
        reset.css 直接【去除】了浏览器的默认样式,根据项目选择一个
        normalize.css 对默认样式进行了【统一】
		例子:<link rel="stylesheet" href="./css/reset.css">
			 <link rel="stylesheet" href="./css/normalize.css">

	去除所有标签里的		但还是会有残留
        *{
            margin: 0;
            padding: 0;
        } 


盒子和尺寸--【默认情况下,盒子可见框的大小由内容区、内边距和边框共同决定】
	box-sizing 用来设置盒子尺寸的计算方式,即设置width和height作用
        content-box 默认值,宽度和高度用来设置内容区的大小【视觉上小一些】
            【这个width height是内容区大小】                        
        border-box 宽度和高度用来设置整个盒子可见框的大小【视觉上大一些】
            【 width 和 height 指的是内容区 和 内边距 和 边框的总大小】




轮廓和圆角
	box-shadow 用来设置元素的阴影效果,阴影不会影响页面布局
        第一个值 水平偏移量 设置阴影的水平位置 正值向右移动 负值向左移动
        第二个值 垂直偏移量 设置阴影的水平位置 正值向下移动 负值向上移动
        第三个值 阴影的模糊半径【****值越大越模糊】
        第四个值 阴影的颜色  一般设为透明的

	outline 用来设置元素的轮廓线,用法和border一模一样
		轮廓和边框不同的点,就是轮廓不会影响到可见框的大小

	border-radius: 用来设置圆角 圆角设置的圆的半径大小	
		border-radius 可以分别指定四个角的圆角
            四个值 左上 右上 右下 左下【顺时针】
            三个值 左上 右上/左下 右下【Z】
            两个个值 左上/右下 右上/左下
			border-radius: 20px / 40px;
		一般要设置两个值    可以使用/或%
            border-top-left-radius:50px 100px;//水平方向半径、垂直方向半径
            border-bottom-left-radius:			

float

浮动--可以使一个元素向其父元素的左侧或右侧移动
	【元素设置浮动以后,水平布局的等式便不需要强制成立】
	【会完全从文档流中脱离,不再占用文档流的位置】
	【把想要横着的元素都设置float浮动】
	float 属性来设置于元素的浮动
        none 默认值 ,元素不浮动
        left 元素向左浮动
        right 元素向右浮动


浮动特点:
    1、浮动元素会完全脱离文档流,不再占据文档流中的位置
    2、设置浮动以后元素会向父元素的左侧或右侧移动,
    【左移右移边界是:父元素的边界】
    3、浮动元素默认不会从父元素中移出
    4、浮动元素向左或向右移动时,【不会超过它前边的其他浮动元素】
    5、【如果浮动元素的上边是一个没有浮动的块元素,则浮动元素无法上移】
    6、浮动元素不会超过它上边的浮动的兄弟元素,最多最多就是和它一样高

简单总结浮动:
浮动目前来讲它的主要作用就是让页面中的元素可以水平排列,
通过浮动可以制作一些水平方向的布局   


浮动其他特点:
	1.浮动元素不会盖住文字,文字会自动环绕在浮动元素的周围,所以我们可以利用浮动来设置文字环绕图片的效果
	2.元素设置浮动以后,将会从文档流中脱离,从文档流中脱离后,元素的一些特点也会发生变化

使用float后的特点:【脱离文档流以后,不需要再区分块和行内了】
    块元素:
        1、块元素不在独占页面的一行
        2、脱离文档流以后,块元素的宽度和高度默认都被内容撑开

    行内元素:
    	行内元素脱离文档流以后会变成块元素,特点和块元素一样

网页布局

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j7MOMkI9-1611721092568)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210126161515122.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s4P4sj6V-1611721092570)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210126161522258.png)]

高度塌陷问题
	在浮动布局中,父元素的高度默认是被子元素撑开的,当子元素浮动后,其会完全脱离文档流,子元素从文档流中脱离将会无法撑起父元素的高度,导致父元素的高度丢失	



BFC--开启BFC该元素会变成一个独立的布局区域---解决高度塌陷
    【像是锁住了,不会因为浮动而变化,同时可以只改变子元素的位置不改变父元素的】

    元素开启BFC后的特点:				
        1.开启BFC的元素不会被浮动元素所覆盖
        2.开启BFC的元素子元素和父元素外边距不会重叠
        3.开启BFC的元素可以包含浮动的子元素

	开启BFC的方法
        1、设置元素的浮动(不推荐)
			float: left;
        2、将元素设置为行内块元素(不推荐)
			display: inline-block;
        3、将元素的overflow设置为一个非visible的值
        - 常用的方式 为元素设置overflow:hidden 开启其BFC 以使其可以包含浮动元素
			overflow: hidden;
        【开启BFC 设为hidden就行,一般写在要被影响的元素下面】
        【开启后不管里面有没有浮动元素【都会锁定了 变成独立区域】】
        【总的来说:overflow:hidden开启BFC我们就可以在某元素里(大范围) 改变小元素  而不影响布局】



clear
	如果我们不希望某个元素因为其他元素浮动的影响而改变位置,使用clear属性来清除浮动元素对当前元素所产生的影响
	【如果是clean了,就会按照原来的未脱离文档时形式显示】
    【通常是在框内最后一个元素处 加clean去除浮动影响,一般不需要写内容,作用只是撑起】

	【原理:设置清除浮动以后,浏览器会自动为元素添加一个上外边距,以使其位置不受其他元素的影响】
	【可以理解为clear解除浮动元素对当前元素影响】

	clear:清除浮动元素对当前元素所产生的影响
        left 清除左侧浮动元素对当前元素的影响
        right 清除右侧浮动元素对当前元素的影响
        both 清除两侧中【最大影响的那侧】




高度塌陷最终解决方案 【解决塌陷】
    我们可以通过BFC解决高度塌陷问题,但有时仍然解决不了,所以我们可以使用最终方案【平时可以使用BFC】
    解决高度塌陷最终方案【高度塌陷就是:父元素撑不开】
    	在最父元素上找::after最后这个    
		再display: block;转化为块元素  
		再clear: both;   【固定写法:找最后的然后撑开就行】

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


解决外边距重叠:想要改变子元素,父元素和子元素一起动了【解决重叠】
		//目标元素::before  后面固定写法
        .box1::before{ 
            content: '';
            display: table;
        }


解决外边距重叠之使用clearfix 【解决重叠和塌陷】
	这个样式可以同时解决高度塌陷和外边距重叠的问题,当你在遇到这些问题时,我们可以直接使用clearfix这个类即可
	//在属性上加class="clearfix"即可
        .clearfix::after{
            content: '';
            display: table;/*table既可以解决塌陷又可以解决重叠*/
            clear: both;
        }

position

定位position
	static 默认值,元素是静止的没有开启定位
    relative 开启元素的相对定位
    absolute 开启元素的绝对定位
    fixed 开启元素的固定定位
    sticky 开启元素的粘滞定位
	
	例子:position: relative;


下面对各个position属性值具体解释:
1.相对定位:relative【通常使用这个,会搭配offset】
    【当元素的position属性值设置为relative时则开启了元素的相对定位】
    相对定位的特点:
        1.元素开启相对定位以后,如果不设置偏移量元素不会发生任何的变化
        2.相对定位是参照于元素在文档流中的位置进行定位的【即它自己】
        3.相对定位会提升元素的层级【层次比原来的高】
        4.相对定位【不会使元素脱离文档流】
        5.相对定位【不会改变元素的性质块还是块,行内还是行内】

	offset偏移量:
        top定位元素和定位位置上边的距离,top值越大,定位元素越【向下移动】
        bottom定位元素和定位位置下边的距离,bottom值越大,定位元素越【向上移动】
		【定位元素垂直方向的位置由top和bottom两个属性来控制,通常情况下我们只会使用其中一】

        left定位元素和定位位置的左侧距离,left越大元素越靠右
        right定位元素和定位位置的右侧距离,right越大元素越靠左
		【定位元素水平方向的位置由left和right两个属性控制,通常情况下只会使用一个】

	例子: position: relative;
		  left: 100px;/*offset就是top bottom left right,我们设置position后再设置上下左右就可以*/

2.绝对定位absolute
	【当元素的position属性值设置为absolute时,则开启了元素的绝对定位】
    绝对定位的特点:
        1.开启绝对定位后,如果【不设置偏移量元素的位置不会发生变化】
        2.开启绝对定位后,元素【****会从文档流中脱离】
        3.绝对定位【会改变元素的性质,行内变成块,块的宽高被内容撑开】
        4.绝对定位【会使元素提升一个层级】
        5.绝对定位元素是相对于其包含块进行定位的【最近开启定位祖先】

	包含块
		【正常情况下包含块就是离当前元素最近的祖先块元素】
	绝对定位的包含块
		【包含块就是离它最近的【开启了定位】的祖先元素】
		【如果所有的祖先元素都没有开启定位则根元素就是它的包含块】

3.固定定位fixed
	【将元素的position属性设置为fixed则开启了元素的固定定位】
	【固定定位也是一种绝对定位,所以固定定位的大部分特点都和绝对定位一样】
	【唯一不同的是固定定位永远参照于浏览器的视口进行定位】
	【固定定位的元素不会随网页的滚动条滚动,元素永远显示在窗口在固定位置】【广告...】】

4.粘滞定位sticky
	【当元素的position属性设置为sticky时则开启了元素的粘滞定位】	
	【粘滞定位和相对定位的特点基本一致】
	【不同的是粘滞定位可以在元素到达某个位置时将其固定】
	例子:向下滑超过设置的位置后,导航栏就一直会显示在最顶处,下面商品没有影响,和之前广告差不多又不同但兼容性不好,通常不使用
		position: sticky;
        top: 10px;//下滑超过10px就固定住


4.绝对定位
	水平布局:开启了绝对定位后,多了左边的left和右边right
	【left + margin-left + border-left + padding-left + width + padding-right + border-right + margin-right + right = 包含块的内容区的宽度】
	【当发生过度约束:如果9个值中没有 auto 则自动调整right值以使等式满足】
	水平居中:margin-left=auto、margin-right=auto、【left=0 right=0】


	垂直布局:
	【top + margin-top/bottom + padding-top/bottom + border-top/bottom + height = 包含块的高度】
	垂直居中:margin-top=auto  margin-button=auto  【top=0 button=0】


	垂直水平居中,绝对定位时候
	positon=relstive
	margin-left=auto  margin-right=auto 【left=0 right=0】
	margin-top=auto  margin-button=auto 【top=0 button=0】
	

元素的层级
	对于开启了定位元素,可以通过z-index属性来指定元素的层级 
	z-index【值越大元素的层级越高,元素的层级越高越优先显示】
		   【如果元素的层级一样,则优先显示编写靠下的元素】
		   【祖先的元素的层级再高也不会盖住后代元素】
		   【祖先元素层级高不管是多少都对子没有用,子和祖先层级会是一样的】
	
	position: absolute;
	z-index: 3;	

font& background

字体
	color 用来设置字体颜色
    font-size 字体的大小
		单位:
        em 相当于当前元素的一个font-size
        rem 相对于根元素的一个font-size
    font-family 字体族(字体的格式)【可以指定多个逗号隔开,也可以写微软雅黑】
		serif  衬线字体
        sans-serif 非衬线字体
        monospace 等宽字体
            
使用:font-family: 'Courier New', monospace;



指定字体
//font-face可以将服务器中的字体直接提供给用户去使用,缺点加载速度过慢
@font-face {
    font-family:'myfont' ;//指定字体名字
    src: url('./font/ZCOOLKuaiLe-Regular.ttf') format("truetype");
	//服务器中字体的路径  format默认情况不用写 这里只是保险确保浏览器能正常识别
}
使用指定字体:font-family: myfont;





图标字体iconfont--网站图标
我们可以将图标直接设置为字体,然后通过font-face的形式来对字体进行引入,避免图片过多
fontawesome 使用步骤
    1.下载 https://fontawesome.com/
    2.解压
    3.将css和webfonts移动到项目中【css webfonts要在同一目录下】
    4.将all.css引入到网页中
    5.使用图标字体
    - 一般会使用i标签来放图标
    class="fas fa-bell" 【前面要么是fas 要么是fab  +找到的名字】
    class="fab fa-accessible-icon"    

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m7IInrQb-1611721092572)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210126112723596.png)]

<link rel="stylesheet" href="./fa/css/all.css">
使用图标:<i class="fas fa-bell-slash"></i>




通过伪元素设置图标字体
方法一:
    1.找到要设置图标的元素通过before或after选中
    2.在content中设置字体的编码
    3.设置字体的样式

    li::before{
        content: '\f1b0';
        font-family: 'Font Awesome 5 Free';
        font-weight: 900; 
    }

    补充:
    用到的font-faimly这两种格式
    1.fab
        font-family: 'Font Awesome 5 Brands';
    2.fas
        font-family: 'Font Awesome 5 Free';
        font-weight: 900; 
方法二:直接用class 然后再用图标编码 
    &#x图标的编码;【编码根据找的 后面的】
    <span class="fas">&#xf0f3;</span>




阿里字体库
iconfont放仓库  下载  下载文件放在一个目录里
引入iconfont.css
1方法一.根据unicode  下面就可以class="iconfont"  然后不同的图标 不同的编码    
	<i class="iconfont">&#xe61c;</i>
2方法二.根据font     class="iconfont  xxx名字"                              
	<i class="iconfont icon-qitalaji"></i>
3方法三.根据伪元素   
	::before{ content:'\123465';font-family:'iconfont' font-size:100px}




行高line height--行高指的是文字占有的实际高度
    行高可以直接指定一个大小(px em)
    也可以直接为行高设置一个整数--如果是整数行高将会是字体的指定的倍数
    【行间距 = 行高 - 字体大小】
	【可以将行高设置为和高度一样的值,使单行文字在一个元素中垂直居中】


字体框
	【font-size实际上就是在设置字体框】的高度
	行高再高也不会超过字体框,行高就在框【中间】



字体简写属性
    font: 字体大小/【行高(可省)】 字体族   50px/2(2可省略)
    	行高 可以省略不写 如果不写使用默认值
			font: bold italic 50px/2  微软雅黑, 'Times New Roman', Times, serif;

	font-weight 字重 字体的加粗 
		normal 默认值 不加粗
        bold 加粗
        100-900 九个级别(没什么用)最好不用

	font-style 字体的风格
		normal 正常的
		italic 斜体


文本样式
	text-align 文本的水平对齐
		left 左侧对齐 默认
        right 右对齐
        center 居中对齐
        justify 两端对齐
	vertical-align 设置元素垂直对齐的方式
        baseline 默认值 基线对齐【文字底部线】【图片默认基线,改变vertiaval-align改为其他】
        top 顶部对齐
        bottom 底部对齐
        middle 居中对齐【div的文字中间 与spane文字中间对齐】
        10...px【具体值来调整】
	text-decoration 设置文本修饰
		none 什么都没有
        underline 下划线
        line-through 删除线
        overline 上划线
			text-decoration: underline red dotted; 【还可以指定颜色 样式】
	white-space 设置网页如何处理空白
        normal 正常
        nowrap 不换行
        pre 保留空白【文本怎么写 就怎显示  a   a  a...】
			【注意处理网页空白,以下属性值缺一不可】
            .box{
                width: 200px;
                white-space: pre;
                overflow: hidden;/*多余内容裁剪掉*/
                text-overflow: ellipsis;/*显示省略号*/
            }




背景1
	background-color 设置背景颜色
	background-image 设置背景图片
        【可以同时设置背景图片和背景颜色,背景颜色将会成为图片的背景色】
        【小于元素,则背景图片会自动在元素中平铺将元素铺满】
        如果背景的图片【大于元素,将会一个部分背景无法完全显示】
			background-image: url("./img/1.png");
	background-repeat 用来设置背景的重复方式
        repeat 默认值 , 背景会沿着x轴 y轴双方向重复
        repeat-x 沿着x轴方向重复【只是横轴,显示一行】
        repeat-y 沿着y轴方向重复
        no-repeat 背景图片不重复【原来多大就显示多大】
	background-position 用来设置背景图片的位置
		【top left right bottom center 几个表示方位的词来设置背景图片的位置】
		【通常配合使用:top left 左上角   top  center顶居中】
		【使用方位词时必须要同时指定两个值,如果只写一个则第二个默认就是center】
		【水平方向的偏移量 垂直方向变量background-position: -50px 300px;】

背景2
	background-clip
        border-box 默认值,背景会出现在边框的下边
        padding-box 背景不会出现在边框,只出现在内容区和内边距
        content-box 背景只会出现在内容区
	background-origin 背景图片的偏移量计算的原点
        border-box 背景图片的变量从边框处开始计算
        padding-box 【默认值】,background-position从内边距处开始计算
        content-box 背景图片的偏移量从内容区处计算

背景大小
	background-size 设置背景图片的大小
        第一个值表示宽度,第二个值表示高度
        【如果只写一个,则第二个值默认是 auto】
        【使用auto图片不会改变原来比例但不会占满框】

        【还可以直接写cover  contain】
        cover 图片的比例不变,将元素铺满【铺满可能显示不完】
        contain 图片比例不变,将图片在元素中完整显示【完全显示肯不铺满】


背景简写
    background-color
    background-image
    background-repeat
    background-position
    background-size
    background-origin
    background-clip
    background-attachment	设置了这个背景图片才会跟着滚轮移动
		scroll 默认值 背景图片会跟随元素移动
        fixed 背景会固定在页面中,不会随元素移动

	【background-size必须写在background-position的后边,并且使用/隔开】
		background-position/background-size
	【background-origin要在background-clip前面】
	【center/contain不会直接出现名,而是写属性】
	
background: url('img/2.jpg') #bfa  center center/contain border-box content-box no-repeat ;





渐变---实现颜色过度效果	需要通过background-image来设置
	线性渐变 linear-gradient()	颜色沿着一条直线发生变化	
        to left
        to right
        to bottom
        to top
        deg deg表示度数
        turn 表示圈
			linear-gradient(to left,red,yellow)//从右向左 to top left
			linear-gradient(red,50px,yellow,70px)//到50红  到70黄
			linear-gradient(.5turn,red,yellow)//半圈  1turn一圈
			linear-gradient(45deg,red,yellow)//45度
			linear-gradient(red,yellow)//红色在开头,黄色在结尾,中间是过渡区域
	【渐变可以同时指定多个颜色,多个颜色默认情况下平均分布,也可以手动指定渐变的分布情况】

	平铺的线性渐变repeating-linear-gradient()
		//到50就满了,但是我的框更大,就重复的铺
		background-image: repeating-linear-gradient(to right ,red, yellow 50px);

	径向渐变  radial-gradient() 径向渐变(放射性的效果) 【中心向四周衍射】
		radial-gradient(大小 at 位置, 颜色 位置 ,颜色 位置 ,颜色 位置)
			大小: 【大小位置间空格,其他逗号】
                circle 圆形
                ellipse 椭圆
                closest-side 近边	
                closest-corner 近角
                farthest-side 远边
                farthest-corner 远角
			位置:
                top right left center bottom

实例:
【指定大小】
background-image: radial-gradient(100px 100px,red,yellow)
【重复效果 repeating-radial-gradient】
background-image: repeating-radial-gradient(100px 100px,red,yellow)
【直接形状通常+width height】
background-image: radial-gradient(circle,red,yellow)//直接使用形状通常效果结合width和height


【指定位置at 100px 0  在颜色前后都可以】
background-image: radial-gradient(100px,100px,at 100px 0,red,yellow)//指定位置
background-image: radial-gradient(100px,100px,red,at center center,yellow)
【也可以不写大小】
background-image: radial-gradient(at top left,red,yellow)//可以不写大小


background-image: radial-gradient(closrst-side,red,yellow)//中间的靠近最近边                 【closest-side 近边、closest-corner 近角、farthest-side 远边、farthest-corner 远角】
closest-side近边、farthest-side远边、clossest-corner近角、farthest-corner远			

html

表格补充:
使用时候少写几列横/纵向的,然后就可以横/纵向合并了
如果希望显示空的 <td></td>
colspan 横向的合并单元格
rowspan 纵向的合并单元格




长表格
可以将一个表格分成三个部分:
    头部 thead-----th
    主体 tbody
    底部 tfoot
    <thead>
        <tr>
            <th>日期</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>2000.1.1</td>
        </tr>
    </tbody>
    <tfoot>
        <tr>
            <td></td>
        </tr>
    </tfoot>




表格样式
    border-spacing: 指定边框之间的距离
    border-collapse: collapse; 设置边框的合并  边框双线这样情况我们希望合并	

    默认情况下元素在td中是垂直居中的 可以通过 vertical-align 来修改
        td{vertical-align:bottom;text-align: center;}

    如果tbody表格中没有使用tbody而是直接使用tr,那么浏览器会自动创建一个tbody,并且将tr全都放到tbody中
        奇数	2n+1   odd 	
		偶数   2n    even
  	
        【总结:遇到table选中不了目标,就使用tbody】
		//让偶数行变色	下面写table没有写tbody,但tbody可用	
        tbody > tr:nth-child(odd){background-color: #bfa;}

	dispaly:table-cell普通标签设置为表格就可以设置元素是否居中





表单:注意事项:必须要为元素指定一个name属性值
	单选按钮:type="radio"	name是一样就是一组  记得指定value
         必须要指定一个value属性,value属性最终会作为用户的填写的值传递给服务器
         checked 可以将单选按钮设置为默认选中
	<input type="radio" name="hello" value="a">
	<input type="radio" name="hello" value="b" checked>

	多选框:type="checkbox" name是一样就是一组  记得指定value
	<input type="checkbox" name="test" value="2">
	<input type="checkbox" name="test" value="3" checked>

	下拉:指定一个name就可以	记得指定value
    <select name="haha">
        <option value="i">选项一</option>
        <option selected value="ii">选项二</option>
    </select>

	提交: type="submit"
	<input type="submit" value="注册">



表单属性补充:对于输入框可以设置的一些属性	可以在input里也可以在form里写
    autocomplete="off" 关闭自动补全
    readonly 将表单项设置为只读,数据会提交
    disabled 将表单项设置为禁用,数据不会提交
    autofocus 设置表单项自动获取焦点

	<input type="color"> 会出现一些颜色,去选但兼容性不好
	<input type="email"> 会对邮件格式检查同时提醒你
	<input type="reset">重置按钮
	<input type="button" value="按钮">基本没作用

animation

过渡transition
	【transition 可以同时设置过渡相关的所有属性】
	【如果要写延迟,则两个时间中第一个是持续时间,第二个是延迟】
	【即只有这两个时间讲顺序,持续时间在前,延迟时间在后,其他都可以乱序】
		例子:transition:2s margin-left 1s cubic-bezier(.24,.95,.82,-0.88);


	也可以使用组合四个对象【对象和时间是必写】
	transition-property: 指定要执行过渡的属性 
        1.多个属性间使用,隔开 
        2.如果所有属性都需要过渡,则使用all关键字
        3.大部分属性都支持过渡效果,注意过渡时必须是从一个有效数值向另外一个有效数值进行过渡
		 【就是无法变成auto】
		4.【需要配合transition-duration(指定时间)使用】
			例子:transition-property: all; 
				 transition-duration: 2s;
	
	 transition-duration: 指定过渡效果的持续时间
		时间单位:s 和 ms  1s = 1000ms
			例子:transition-duration: 100ms, 2s;

	transition-timing-function: 过渡的时序函数
        ease 默认值,慢速开始,先加速,再减速
        linear 匀速运动
        ease-in 加速运动
        ease-out 减速运动
        ease-in-out 先加速 后减速
        cubic-bezier() 来指定时序函数	贝塞尔曲线
        	了解访问:https://cubic-bezier.com
        steps() 分步执行过渡效果
            end , 在时间结束时执行过渡(默认值)
            start , 在时间开始时执行过渡
		例子:
        transition-timing-function: cubic-bezier(.24,.95,.82,-0.88);
        transition-timing-function: steps(2);【表示分两步执行】 
		transition-timing-function: steps(2, start);【2秒时开始】  
		transition-timing-function: steps(2, end);【2秒时结束】

	transition-delay: 过渡效果的延迟,等待一段时间后在执行过渡
		例子:transition-delay: 2s;

	【过渡简单来说就是是一个值变成另一个值变化】
	【过度效果就是动画变形、平移、旋转缩放等的中间,可以用来给变形什么的一个持续时间等效果】
	例子1://高度过度2s  
        transition:all 2s;		
        transition:height 2s 

	例子2://margin-left 从0-1000变化
		.box1 div{
            margin-left: 0;           
        }
		.box2{
			margin-left: 1000px; 
		}



动画【动画和过渡类似,都是可以实现一些动态的效果】
	【不同的是过渡需要在某个属性发生变化时才会触发,动画可以自动触发动态效果】
	【设置动画效果,必须先要设置一个关键帧,关键帧设置了动画执行每一个步骤】

	指定谁:animation-name: +要对当前元素生效的关键帧的名字
		例子:animation-name: test;
	指定时间:animation-duration: 【动画运行要指定时间】
		例子:animation-duration: 4s; 
	指定延时:
		例子:animation-delay: 2s; 
		例子:animation-timing-function: ease-in-out;
	指定次数:animation-iteration-count 动画执行的次数
        次数(具体)
        infinite 无限执行
	指定方向:animation-direction
        normal 默认值  从 from 向 to运行 每次都是这样 
        reverse 从 to 向 from 运行 每次都是这样 
        alternate 从 from 向 to运行 重复执行动画时反向执行
        alternate-reverse 从 to 向 from运行 重复执行动画时反向执行
	指定执行状态:animation-play-state:一般设置按钮 或鼠标移入等停止或开启
		running 默认值 动画执行
        paused 动画暂停
	指定填充模式:animation-fill-mode
        none 默认值 动画执行完毕元素回到原来位置
        forwards 动画执行完毕元素会停止在动画结束的位置
        backwards 动画延时等待时,元素就会处于开始位置
        both 结合了forwards 和 backwards

	实列:【关键字 后面是名字  然后指定开始和结尾】
    @keyframes test {
        /* from表示动画的开始位置 也可以使用 0% */
        from{
            margin-left: 0;
            background-color: orange;
        } 

        /* 这里也可以写40%{...40%时发生什么}*/
        to{
            background-color: red;
            margin-left: 700px;
        }
    }



变形--通过CSS来改变元素的形状或位置
	【变形不会影响到页面的布局】
	【1个元素只有1个transform效果生效】

	transform 用来设置元素的变形【效果】【百分比是相对于自身计算的】
		translateX() 沿着x轴方向平移
        translateY() 沿着y轴方向平移
        translateZ() 沿着z轴方向平移

	变形居中元素大小确定情况
		 top: 0;
        left: 0;
        bottom: 0;
        right: 0;
        margin: auto;
	变形居中大小不确定的情况
		左 上 x y 都居中  xy中间没有逗号
		left: 50%;
        top: 50%;
        transform: translateX(-50%) translateY(-50%);


Z轴平移translateZ
	perspective: 800px;//鼠标离目标对象越近,目标就越大,即视距越大就越近
	translateZ(400px);//设置z轴的,z轴的基本上不常见

	 z轴平移,调整元素在z轴的位置,正常情况就是调整元素和人眼之间的距离【 距离越大,元素离人越近】
	z轴平移属于立体效果(近大远小),默认情况下网页是不支持透视,如果需要看见效果【必须要设置网页的视距】



旋转rotateZ
	通过旋转可以使元素沿着x y 或 z旋转指定的角度
    rotateX()
    rotateY()
    rotateZ()
	
	//转1/4圈  (1turn)1圈	也可以(45dug) 45°
	transform: rotateZ(.25turn);

	//设置是否显示元素的背面 visible显示
	backface-visibility: hidden;



缩放
	关于z轴的缩放 要写perspective
	但缩放在z轴上一般无效果 除非:transform:rotateY(45deg) scaleZ(2)
		例子:perspective:800px;	
			 transform:rotateY(45deg) scaleZ(2)

	可以改变变形的原点 默认值 center
		例子:transform-origin:20px 20px;

	对元素进行缩放的函数:正值放大,负值缩小
    scaleX() 水平方向缩放
    scaleY() 垂直方向缩放
    scale() 双方向的缩放
		例子:使用:transform:scale(2)
	
	【使用缩放,通常我们还需要在父元素里加overflow用于放大图片】

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4FVNTC2E-1611721092574)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210127115611290.png)]
在这里插入图片描述

less

//好处:改color就全部都能改了,相当于是全部变量,
html{
    --color:#ff0;
}
.box2{
    color: var(--color);
}



less是一门css的预处理语言,是css的增强版,less可以编写更少的代码实现更强大的样式
浏览器无法直接执行less代码,要执行必须向将less转换为css,然后再由浏览器执行


less与css写法区别
div{
    width:100px;【css】
}
div
	width 100px【less】



less语法
.box1{
    ....
    .box2{
    }
    .box3{
    }
}

C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210126104945307.png

less变量
【使用可以直接使用@名称,作变量@(名称)形式】
【变量是就近原则,誰近就使用誰】【可以在变量声明前使用变量】 

@a:100px;	//定义变量
.box{
    width:@a //使用变量
}

//也可以作类名
@c:box6
.@(c){//注意有()号
   backgrouund-image:url("@(c)/1.jdp");
}	

flex

flex(弹性盒、伸缩盒)【为了解决浮动而提供一种新的布局方式】
	【flex可以使元素具有弹性,让元素可以跟随【页面的大小的改变而改变】
	一般设置:
        display:flex;
        flex-direction:column;
        【方向有row row-reverse column column-reverse】
	
	弹性容器:
		【要使用弹性盒子,必须先将一个元素设置为弹性容器,即设置display】
		display:flex设置为块级弹性容器
		display:inline-flex 设置为【行内】的弹性容器【独占一行】
		
	弹性元素:
		弹性远看可以同时是弹性容器
		弹性容器的子元素就是弹性元素


弹性盒子:以前设置盒子很麻烦,现在直接display:flex 再设置一些其他的就可以了
	1.flex-direction 指定容器中弹性元素的排列方式
        row 默认值,弹性元素在容器中水平排列(主轴左向右)
        row-reverse 弹性元素在容器中反向水平排列(主轴右向左)
        column 弹性元素纵向排列(自上向下)
        column-reverse 弹性元素方向纵向排列(自下向上)
	2.弹性元素的属性:
		flex-grow 指定弹性元素的伸展的系数
			【父元素的剩余空间,会按照比例进行分配】
			【flex-grow: 1; 给每一盒子不同的数 会按照不同比例】
		flex-shrink 指定弹性元素的收缩系数
			【当父元素中的空间不足以容纳所有的子元素时,如果对子元素进行收缩】
			【默认1 等比例收缩 值越大收缩越多】


弹性容器的样式1
	flex-wrap: 【设置弹性元素是否在弹性容器中自动换行】
		nowrap 默认值,元素不会自动换行
        wrap 元素沿着辅轴方向自动换行
        wrap-reverse 元素沿着辅轴反方向换行
	justify-content【设置【主轴】上的元素排列】
		flex-start 元素沿着主轴起边排列
        flex-end 元素沿着主轴终边排列
        center 元素居中排列
        space-around 空白分布到【元素两侧】
        space-between 空白均匀分布到【元素间】
        space-evenly 空白分布到元素的【单侧】
	align-item:【元素在辅轴上,元素之间的关系】
        stretch 默认值   将元素的长度设置为相同的值 
        flex-start     元素不会拉伸,沿着辅轴起边对齐
        flex-end		沿着辅轴的终边对齐
        center			居中对齐
        baseline		基线对齐
		【希望水平垂直居中对齐】
		justiy-content:center;align-item:center;
	align-content:【辅轴空白的分布】
        center
        flex-start
        flex-end
        space-around
        space-between
	align-self: 【用来覆盖当前弹性元素上的align-items】
		align-self: stretch;【可以用来单独调节某个元素】


弹性元素样式2
	弹性的增长系数:
		flex-grow: 1;【按比例分配】
	弹性元素的缩减系数:缩减多少是根据 缩减系数 和 元素大小来计算
		flex-shrink: 1; 
	元素基础长度flex-basis 指定的是元素在【主轴上的基础长度】
		如果主轴是 横向的 则 该值指定的就是元素的宽度
        如果主轴是 纵向的 则 该值指定的是就是元素的高度
		默认值是 auto,表示参考元素自身的高度或宽度
		如果传递了一个具体的数值,则以该值为准
        flex-basis: auto; 
	flex 可以设置弹性元素所有的三个样式
		【flex 增长 缩减 基础;】
        initial【默认值】 "flex: 0 1 auto".
        auto  "flex: 1 1 auto"
        none "flex: 0 0 auto" 弹性元素【没有弹性】
	order 决定弹性元素的排列顺序  越大就越排在前面
		【通常在某属性里xxx选择器{order:2}就设定了元素排列顺序】



像素
    - 屏幕是由一个一个发光的小点构成,这一个个的小点就是像素
    - 分辨率:1920 x 1080 说的就是屏幕中小点的数量

    - 在前端开发中像素要分成两种情况讨论:CSS像素 和 物理像素
    - 物理像素,上述所说的小点点就属于物理像素
    - CSS像素,编写网页时,我们所用像素都是CSS像素
    - 浏览器在显示网页时,需要将【CSS像素转换为物理像素然后再呈现】
    - 一个css像素最终由几个物理像素显示,由浏览器决定:
        【默认情况下在pc端,一个css像素(编程) = 一个物理像素(实体)】
        【只要知道css像素和物理像素不一样】

视口(viewport)【屏幕显示大小】
    - 视口就是屏幕中用来显示网页的区域
    - 可以通过查看视口的大小,来观察CSS像素和物理像素的比值
    - 默认情况下:
        视口宽度 1920px(CSS像素)【F12小窗口像素】
                1920px(物理像素)【物理像素和视口像素差不多】
                - 此时,css像素和物理像素的比是 1:1
    - 放大两倍的情况:
    	视口宽度 960px(CSS像素)
                1920px(物理像素)
                - 此时,css像素和物理像素的比是1:2

    - 我们可以通过改变视口的大小,来改变CSS像素和物理像素的比值


移动端页面
	移动端的像素比就是  980/移动端宽度  (980/750)

    结论:以后再写移动端的页面,就把上边这个玩意先写上,即将网页设置为完美视口
	<meta name="viewport" content="width=device-width, initial-scale=1.0">

视口单位补充:
	移动端不使用px我们尽量使用vm
	我们使用750px*1125px来显示整个屏幕100vw=750px

    如果:我们设计48px*35px	因为100vw=750px 换算得到0.13333333vm=1px 
	【0.13333333vm=1px  通过这个转换成px  0.1333333*目标px=我们需要的结果vm】
    所以分别乘:48px=6.4vm   35px=4.667vm


vm适配器--就是使用rem单位
	网页中字体大小最小是12px,不能设置一个比12像素还小的字体
	如果我们设置了一个小于12px的字体,则字体自动设置为12
	
	如果图:300*100
        300/40   结果单位rem【扩大40被】【就使用40 因为好算】
        100/40   结果单位rem【扩大40被】
	【即需要扩大几倍就/n--就能转为rem了】


响应式布局
    【根据窗口呈现不同布局,一个网页使用于不同窗口】
    - 网页可以根据不通的设备或窗口大小呈现出不同的效果
    - 使用响应式布局,可以使一个网页适用于所有设备
    - 响应布局的关键就是 媒体查询
    - 【通过媒体查询,可以为不通的设备,或设备不同状态来分别设置样式】

	使用媒体查询@media 查询规则{}
        all 所有设备
        print 打印设备
        screen 带屏幕的设备
        speech 屏幕阅读器
        - 可以使用,连接多个媒体类型,这样它们之间就是一个或的关系
	
	//only主要是兼容一些较老的版本,不写也可以
    @media only screen {
        body{
            background-color: #bfa;
        }
    }


媒体查询
	我们使用时可以设置一个上线和下线  根据不同的屏幕设置不同的上下线
    @media only screen and (min-width: 500px) and (max-width:700px){
        body{
            background-color: #bfa;
        }
    }
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值