CSS基础学习

1. css的引入方式:行内式、内嵌式、链接式、导入式。

导入式@import  可以放到style标签中,也可以放到css文件里面,但是不管是放到style元素中还是css文件中都必须写在前面,否则就根本不起作用。

<style type="text/css">

     @import"mystyle.css"; 此处要注意.css文件的路径

 </style>

导入式:会在整个页面装载完成后再装载CSS文件,对于有的浏览器来说,在一些情况下,如果网页文件的体积比较大,则会出现先显示无样式的页面,闪烁一下之后再出现设置样式后的效果,从浏览者的感受来说,这是导入式的一个缺陷。

CSS中 link 和@import 的区别是?

(1)、link属于HTML标签,而@import是CSS提供的; 
(2)、页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载;
(3)、import只在IE5以上才能识别,而link是HTML标签,无兼容问题;

(4)、link方式的样式的权重 高于@import的权重.


2. CSS Reset(重设):

CSS重设就是由于各种浏览器解释CSS样式的初始值有所不同,导致设计师在没有定义某个CSS属性时,不同的浏览器会按照自己的默认值来为没有定义的样式赋值,所以我们要先定义好一些CSS样式,来让所有浏览器都按照同样的规则解释CSS,这样就能避免发生这种问题。

最简化的CSS Reset(重设) :

* {
      padding: 0;
      margin: 0;
}
将所有元素的padding和margin值都设为0,可以避免一些浏览器在理解这两个属性默认值上的”分歧”。


3.CSS权重    256进制

!important     Infinity

行内样式      1000

ID选择器       100

类|属性|伪类   10

标签                1

通配符             *   


并列选择器:

div.demo  中间没有空格,选出div且类名是demo,  有标签选择器,标签选择器必须在前面 

如果放在后面系统会认为.demodiv是类名为demodiv


权重计算:

<div class="classDiv" id="idDiv">
	<p class="classP" id="idP">1</p>
</div>
#idDiv p{/*权重是101*/
		background-color: red;   
	}
	.classDiv .classP{/*权重是20*/
		background-color: yellow;
	}

不管有没有空格,只要在同一行权重相加即可

#idDiv p{/*101*/
		background-color: red;
	}
	.classDiv .classP#idP{/*10+10+100=120*/
		background-color: yellow;
	}
如果权重相,同后面的会覆盖前面的:

背景是黄色

#idDiv p.classP{
		background-color: red;
	}
	.classDiv .classP#idP{
		background-color: yellow;
	}


!important权重:

显示红色:

#idDiv p.classP{
		background-color: red!important;/*100+1+10+Infinity*/
	}
	.classDiv .classP#idP{
		background-color: yellow;
	}
黄色:
#idDiv p.classP{
		background-color: red!important;
	}
	.classDiv .classP#idP{
		background-color: yellow!important;
	}

红色:
div#idDiv p.classP{
		background-color: red!important;
	}
	p .classP#idP{
		background-color: yellow!important;
	}


文字:

<div>前端工程师</div>
div{
		font-size: 20px;
		border: 1px solid black;
		/*水平居中*/
		text-align: center;
		/*height==lineheight垂直居中*/
		height: 200px;
		line-height: 200px;
	}

首行缩进2个字符:

div{
		font-size: 20px;
		border: 1px solid black;
		text-indent: 2em;
	}
img之间有间隔:这是因为凡是带有inline的元素,都有文字特性
<img src="img/1.jpg"/>
<img src="img/2.jpg"/>
<img src="img/3.jpg"/>
<img src="img/4.jpg"/>

当去掉img之间的回车符:
<img src="img/1.jpg"/><img src="img/2.jpg"/><img src="img/3.jpg"/><img src="img/4.jpg"/>

<style>
	img{
		width: 200px;
		margin-left: -8px;
	}
</style>

<img src="img/1.jpg"/>
<img src="img/2.jpg"/>
<img src="img/3.jpg"/>
<img src="img/4.jpg"/>

压缩代码放到服务器上会去回车,去空格符号,所以测试环境margin-left:-8px;线上不用处理,会自动去掉回车符。

可以设置父级元素的font-size:0;

也可以将图片样式设置成display: block;float: left;

在实际开发中,有左边图片,右边文字的样式:

    使用float,

    使用display:inline-block,但是使用inline-block时,也会出现空隙的问题,本来按照UI设置padding、margin等,却发现有像素差,还是因为产生了空隙,设置父级元素font-size:0就可以了。

    使用弹性盒子也可以解决。


CSS浮动:

浮动元素产生了浮动流,所有产生了浮动流的元素,块级元素看不到他们,产生了BFC的元素和文本类属性(带有inline属性)的元素以及文本都能看到浮动元素。

<div class="box"></div>
<div class="demo"></div>

1.块级元素看到不见浮动元素;

.box{
		width: 100px;
		height: 100px;
		background-color: yellow;
		float: left;
	}
	.demo{
		width: 200px;
		height: 200px;
		background-color: red;
	}

2.带有inline属性的元素看见浮动元素:

.box{
		width: 100px;
		height: 100px;
		background-color: yellow;
		float: left;
	}
	.demo{
		width: 200px;
		height: 200px;
		background-color: red;
		display: inline-block;
	}

<div class="box"></div>
<img src="img/1.jpg" style="height: 100px;"/>
.box{
		width: 100px;
		height: 100px;
		background-color: yellow;
		float: left;
	}


文本能看见浮动元素:

<div class="box"></div>123
.box{
		width: 100px;
		height: 100px;
		background-color: yellow;
		float: left;
	}


在父元素内浮动的情况:

<div class="wrap">
	<div class="left">left</div>
</div>
.wrap{
	background-color: red;
	width: 200px;
	height: 200px;
}
.left{
	width: 100px;
	height: 100px;
	float: left;
	background-color: yellow;
}

当父元素添加20px的padding后:

.wrap{
	background-color: red;
	width: 200px;
	height: 200px;
	padding: 20px;
}
.left{
	width: 100px;
	height: 100px;
	float: left;
	background-color: yellow;
}



当浮动元素在父级元素内浮动时,只在内容区域,子元素遇到父元素的内容区边界,停止移动。


清除浮动:

先了解伪元素::first-line、:first-letter、:before、:after,

伪类::hover、:focus等

CSS3为了区别伪类和伪元素,将伪元素的写法由单冒号改为双冒号::first-line、::first-letter、::before、::after

<span>css</span>
span::before{
		content: 'html';
	}
span::after{
	        content: 'javaScript';
        }

伪元素天生存在,是inline,如果设置宽高,必须改为块级元素。

<div class="wrap">
	<div class="box"></div>
	<div class="box"></div>
	<div class="box"></div>
</div>
.wrap{
		width: 300px;
		border: 1px solid red;
	}
	.box{
		width: 100px;
		height: 100px;
		background-color: yellow;
		float: left;
	}
	.wrap::after{
		content: "";
		clear: both;
	}

并没有清除浮动,因为clear属性只对块级元素起作用



在将伪元素的display属性设置为块级元素即可,display的值设置成block、table都行,但是不能设置为inline-block

.wrap{
		width: 300px;
		border: 1px solid red;
	}
	.box{
		width: 100px;
		height: 100px;
		background-color: yellow;
		float: left;
	}
	.wrap::after{
		content: "";
		display: block;
		clear: both;
	}



position:absolute和float:left/right会将元素转换成inline-block

<div class="demo">
         position:absolute和float:left/right会将元素转换成inline-block
</div>
.demo{
		float: left;
		border: 1px solid red;
	}


虽然样式表中仍是display:block,但是div的宽度不是全屏,而是由内容决定。


<span class="demo"></span>
.demo{
		float: left;
		background-color: yellow;
		width: 100px;
		height: 100px;
	}

设置浮动后,span元素可以设置宽高

文字溢出处理:

单行文字溢出处理:

<p>
		文字溢出单行处理,不换行,溢出隐藏,文本溢出ellipsis
</p>
p{
		width: 300px;
		height: 20px;
		line-height: 20px;
		border: 1px solid black;
		white-space: nowrap;
		overflow: hidden;
		text-overflow: ellipsis;
	}

多行文字溢出打点可以用css3,但是有兼容性问题,一般使用截断:

主要是两点:容器高度设置为行高的倍数,如果是两倍,则height:2em; overflow:hidden,这样就只显示两行。

文字代替图片:

<a href="http://taobao.com" target="_blank">淘宝网</a>


a{
	display: inline-block;
	text-decoration: none;
	color: #f40;
	width: 80px;
	height: 33px;
	background-image: url(img/taobao.png);
	background-size: 80px 33px;
	text-indent: 100px;
	white-space: nowrap;
	overflow: hidden;
}	
css加载失败时:


css加载成功时:


或者利用padding,将height设置为0。

a{
	display: inline-block;
	text-decoration: none;
	color: #f40;
	width: 80px;
	height: 0px;
	padding-top: 33px;
	background-image: url(img/taobao.png);
	background-size: 80px 33px;
	overflow: hidden;
}

’常见布局:

一列布局:设置宽度,margin:0 auto;

二列布局:

侧列div放在前面

侧列设置浮动,主列margin-left:侧列宽度+间距(间距自己设置)。

三列布局:main-wrap必须要设置左浮动

<div class="main-wrap">
     <div class="main">main</div>
</div>
<div class="left">left</div>
<div class="right">right</div>
	*{
		margin: 0;
		padding: 0;
	}
.left{
	width: 200px;
	height: 600px;
	float: left;
	margin-left: -100%;
	background-color: red;
}
.right{
	width: 200px;
	height: 600px;
	float: right;
	margin-left: -200px;
	background-color: red;
}
.main-wrap{
	width: 100%;
	height: 600px;
	float: left;
	background-color: yellow;
}
.main{
	margin: 0 200px;
}

渐进增强和优雅降级:

        渐进增强 progressive enhancement:针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。
  优雅降级 graceful degradation:一开始就构建完整的功能,然后再针对低版本浏览器进行兼容。

  区别:优雅降级是从复杂的现状开始,并试图减少用户体验的供给,而渐进增强则是从一个非常基础的,能够起作用的版本开始,并不断扩充,以适应未来环境的需要。降级(功能衰减)意味着往回看;而渐进增强则意味着朝前看,同时保证其根基处于安全地带。

CSS 预处理器和后处理器:

        CSS 预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为 CSS 增加了一些编程的特性,将 CSS 作为目标生成文件,Sass、LESS、Stylus 是目前最主流的 CSS 预处理器。

        CSS 后处理器是对CSS进行处理,并最终生成CSS的预处理器,它属于广义上的CSS 预处理器。Autoprefixer,通过Can I Use数据库来确定哪些浏览器前缀是需要的,然后解析CSS文件,将前缀添加到CSS规则里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值