css基础和心得(四)

现在来说相对定位:

如果想为元素设置层模型中的相对定位,需要设置position:relaive(表示相对

定位),它通过left、right、top、bottom属性确定元素在正常文档流中便宜位

置。相对定位完成的过程是首先按static(float)方式生成一个元素(并且元素像

层一样浮动了起来),然后相对于以前的位置移动,移动的方向和幅度由left、right、

top、bottom属性确定,偏移前的位置保留不动。那么,什么叫“偏移前的位置保

留不动呢?”就是div元素相对于以前的位置产生偏移,但是div元素以前的位置

还保留着,所以在div元素里面的标签内的东西是不会偏离的。说简单点就是原来

div里面比如有一段文字,文字是不会动的,只是动div。

第三种是固定定位:

fixed:表示固定定位,与absolute定位类型类似,但它的相对移动的坐标是视图

(屏幕内的网页窗口)本身。由于视图本身是固定的,它不会随浏览器窗口的滚动

条滚动而变化,除非你在屏幕中移动浏览器窗口的屏幕位置,或改变浏览器窗口的

显示大小,因此固定定位的元素会始终位于浏览器窗口内视图的某个位置,不会受

文档流动影响,这与background-attachment:fixed;属性功能相同。这个官方意思

说的太复杂,要我说就是你们看的某些网站上面有一些什么普京啦等等赌博类型广

告在左右侧,你还无法关闭的那种东西。明白了嘛?/斜眼笑

学了绝对定义的方法:使用position:absolute可以实现被设置元素相对于浏览器

(body)设置定位以后,有没有想过可不可以相对于其他元素进行定位呢?答案是

肯定的。但是使用position:relative来帮忙,但是必须要遵循几个规范:

1、参照定位的元素必须是相对定位元素的前辈元素:

<div id="box1"><!--参照定位的元素-->

<div id="box2">相对参照元素进行定位</div><!==相对定位元素-->

</div>

从上面可以看出box1是box2的父元素(父元素当然是前辈元素了)

2、参照定位的元素必须加入position:relative;

#box1{

width:200px;

height:200px;

position:relative;

}

3、定位元素加入position:absolute,便可以使用top、bottom、left、right进行

偏移定位了。

#box2{

position:absolute;

top:20px;

left:30px;

}

这样box2就可以相对于父元素box1定位了(这里注意参照物就可以不是浏览器了

而可以自由设置了。)这里一定要记住前后呼应,子元素要参照父元素的标准,

所以父元素是参照物,一定要加position:relative;子元素中要加position:absolute;

然后容易错的地方就是写html的时候,没有把子元素放在父元素中去,那么就不

能称之为父元素和子元素了。

然后我们来接着上面的说一下简写,这样做有个好处,就是缩减带宽,减少资源占

用。盒子模型中记得是什么样的吗?上(top)右(right)下(bottom)左(left)如:

margin:10px 15px 12px 14px;/*上设置为10px 右设置为15px 下设置为12px 左设

置为14px*/

通常有下面三种缩写方法:

1、如果top、right、bottom、left值相同,如:

margin:10px 10px 10px 10px;可以缩写为:margin:10px;

2、如果top和bottom相同,right和left相同,如:

margin:10px 20px 10px 20px;可以缩写为:10px 20px;

3、如果left和right相同,如:

margin:10px 20px 30px 20px;可以缩写为:margin:10px 20px 30px;

注意:padding、border的缩写方法和margin是一致的。

再注意一点啊:padding(拍腚)的意思是里面的内容到边框的距离又称之为填充

物!margin(妈个鹰)是在外面的!是包含整个的!border(包的)就是边框!包

起来的!

然后说颜色值缩写。这个嘛。。。找w3cschool慢慢查。。。我这个真不好写。

接着说字体缩写,网页中的字体css样式代码也有他自己的缩写方式,具体百度。

然后说长度值,这里要总结一下,常用到的px(像素)、em、%百分比,要注意其

实这三中单位都是相对单位。

1、像素

像素为什么是相对单位呢?因为像素指的是显示器上的小点(css规范中假设"90px=1英寸")

实际情况是浏览器会使用显示器的实际像素值有关,在目前大多数的设计者都倾向

于使用像素(px)作为单位

2、em

就是本元素给定字体的font-size值,如果元素的font-size为14px,那么1em=14px;

如果font-size为18px,那么1em=18px。如下:

p{font-size=12px;text-indent:2em;}这行代码就是可以实现段落首行缩进24px(

也就是两个字体大小的距离)

注意一个情况:当font-size设置单位为em时,此时计算的标准以p的父元素的font-size

为基础。如:

html:

<p>以这个<span>例子</span>为例。</p>

css:

p{font-size:14px}

span{font-size:0.8em;}

结果span中的字体“例子”字体大小就为11.2px(14*0.8=11.2px)

3、百分比

p{font-size:12px;line-height:130%}

设置行高(行间距)为字体的130%(12*1.3=15.6px)

我们实际工作中常会遇到需要设置水平居中的场景,比如为了美观,文章的标题

一般都是水平居中显示的。

这里我们又得分两种情况:行内元素还是块状元素,块状元素里面又分为定宽块

状元素以及不定宽块状元素。我们来了解一下行内元素怎么进行水平居中?

如果被设置元素为文本、图片等行内元素时,水平居中是通过给父元素设置一行

代码:text-algin:center来实现的。

但是当被设置元素为块状元素时用:text-align:center就不起作用啦,这时也分

两种情况:定宽块状元素和不定宽块状元素。

顶宽块状元素的情况是满足顶宽和块状两个条件的元素是可以通过设置"左右margin"

值为"auto"来实现居中的。如:

html:

<body>

<div>我是顶宽块状元素,要水平居中。</div>

</body>

css:

<style>

div{

border:1px solid red;/*为了显示居中效果,设置div边框*/

width:200px;/*定宽*/

margin:20px auto/*margin-left与margin-right设置为auto*/

}

</style>

也可以写成:

margin-left:auto;

margin-right:auto;

注意:元素的"上下margin"是可以随意设置的。

在实际工作中我们会遇到需要为"不定宽度的块状元素"设置居中,比如网页上的分

页导航,因为分页的数量是不确定的,所以我们不能通过设置宽度来显示它的弹性

(不定块状元素:块状元素的宽度width不固定)

不定宽度的块状元素有三种方法居中(这三种方法目前使用都比较多):

1、加入table标签

2、设置display:inline方法与第一种类似,显示类型设为行内元素,进行不定宽

元素的属性设置

3、设置position:relative和left:50%:利用相对定位的方式,将元素向左偏移50%

即达到居中的目的。

先讲一下第一种,为什么选择方法--加入table标签?是利用table标签的长度自适

应性--即不定义其长度也不默认父元素body长度(table其长度根据其文本长度决

定)因此可以看做一个定宽度快元素,然后再利用定宽度块状居中的margin方法,

使其水平居中。

第一步:为需要设置的居中的元素外面加入一个table标签(包括<tbody>、<tr>、

<td>)

第二步:为这个table设置左右margin居中(这个和定宽块状元素方法一样)

第二种方法是改变元素的display类型为行内元素,利用其属性直接设置。改变块

级元素的display为inline类型(设置为行内元素显示)然后使用text-align:center

来实现居中效果。

html:

<body>

<div class="container">

<ul>

<li><a href="#">1</a></li>

<li><a href="#">2</a></li>

<li><a href="#">3</a></li>

</ul>

</body>

css:

.container{

text-align:center;

}

/*margin:0;padding:0(消除文本与div边框之间的间隙)*/

.container ul{

list-style:none;

margin:0;

padding:0;

display:inline;

}

.container li{

margin-right:8px;

display:inline;

}

这种方法相比第一种方法的优势是不用增加无语义标签,但也存在着一些问题:它

将块状元素的display类型改为inline,变成了行内元素,所以少了一些功能,比

如设定长度值。

除了插入table以及改变元素的display类型,可以使不定宽块状元素水平居中之外

还有第三种方法,设定浮动和相对定位来实现。

通过给弗雷元素设置float,然后给父元素设置position:relative和left:50%子元

素设置position:relative和left:-50%来实现水平居中。我们可以这样理解:假想

ul层(下面例子的div层)的浮层中间有条平分线将ul层的父层(div层)平均分为

两份,ul层的css代码是将ul层的最左端与ul层的父层(div层)的平分线对齐;而

li层的css代码则是将li层的平分线与ul层的最左端(也是div层的平分线)对齐,

从而实现li层的居中。代码如下:

html:

<body>

<div class="container">

<ul>

<li><a href="#">1</a></li>

<li><a href="#">2</a></li>

<li><a href="#">3</a></li>

</ul>

</div>

</body>

css:

<style>

.container{

float:left;

position:relative;

left:50%

}

.container ul{

list-style:none;

margin:0;

padding:0;

position:relative;

left:-50%;

}

.container li{float:left;display:inline;margin-right:8px;}

</style>

我们在实际工作中也会遇到需要设置垂直居中的场景,比如很多保值和文章标题左

右一侧时,常常会设置为垂直居中,为了用户体验性好。然后这里又得分为两种情

况:父元素高度确定的单行文本以及父元素高度确定的多行文本。

父元素高度确定的单行文本的竖直居中的方法是通过设置父元素的height和line-height

高度一致来实现的。(height:该元素的高度,line-height:顾名思义,行高,又

称行间距,指在文本中,行与行之间的基线间的距离。)

line-height与font-size的计算值之差,在css中称为"行间距"。分为两半,分别

加到一个文本行内容的顶部和底部。这种文字行高与块高一致带来一个弊端,当文

字内容的长度大于块的宽时,就有内容脱离了块。如:

<div class=""container>

hi,baby!

</div>

css:

<style>

.container{

height:100px;

line-height:100px;

background:#999;

}

</style>

父元素高度确定的多行文本、图片等的竖直居中的方法有两种:

方法一:使用插入table(包括tbody、tr、td)标签,同时设置vertical-align:middle

css中有一个用于竖直居中的属性vertical-align,在父元素设置此样式时,会对

inline-block类型的子元素都有用。如:

html:

<body>

<table><tbody><tr><td class="wrap">

<div>

<p>看我是否居中</p>

</div>

</td></tr></tbody></table>

</body>

css:

table td{height:50px;background:#ccc}

因为td标签默认情况下就默认设置了vertical-align为middle,所以我们不需要显

式的设置了。

除了table标签还有一种,我就不细说了,因为兼容性比较差。做前端最重要的一

点就是兼容性的问题。ie6,ie7不支持的东西就拉倒了。

最后说一点,隐性改变display类型。

有一个有趣的现象就是当元素(不论之前是什么类型的元素,display:none除外)

设置一下2个语句之一:1、position:absolute 2、float:left或float:right

简单点来说,只要html代码中出现以上两句之一,元素的display显示类型就会自

动变为以display:inline0-block(块状元素)的方式显示,当然就可以设置元素

的width和height了,且默认宽度不占满父元素。

如下,都知道a标签是行内元素,所以设置它的width是没有效果的,但是设置为

position:absolute(绝对定位)以后就可以了。

html:

<div class="container">

<a href="#" title="">进入</a>

</div>

css:

<style>

.container a{

position:absolute;

width:200px;

background:#ccc;

}

</style>

如果想不起来display:line-block是什么的可以回头看看"元素分类-内联块状元素"

到这里,css的一些基础方面知识就说的差不多了。希望各位记住一点,一定要端

正自己的态度,态度决定高度。一定不能眼高手低,不然会跟我一样吃了很多很多

亏才好不容易绕回来。

时间: 2024-10-10 00:56:27

css基础和心得(四)的相关文章

CSS基础学习十四:盒子模型补充之display属性设置

我在CSS基础学习十三:盒子模型的i博文只是阐释了CSS盒子模型,并没有过多的使用实例来演示.这篇博文 就来做一些盒子模型知识的补充.这一部分对于网页总体布局还是蛮重要的,过去大多数使用HTML中的table元素和 框架标签来进行网页的整体布局,现在我们使用最多的是DIV+CSS网页布局.所以一定要掌握好盒子模型,记住 content,border,padding和margin各自在盒子中的作用和使用方式. 先来看一个完整元素的盒子模型实例: <!DOCTYPE html PUBLIC "

XHTML+CSS基础知识(四):用CSS控制页面

1.CSS写入页面的方法有哪些? 行内式:直接在标签当中利用style属性来写样式表. 内嵌式:将所有的样式表提取出来放到网页头部的style标签当中. 链接式:将样式表单独写成一个.css文件,利用link标签在网页头部引用,W3C标准推荐. 导入式:利用@import来引入样式表,由于效率等等问题已经被淘汰 2.CSS样式表的优先级? 理论上:行内样式>内嵌样式>链接样式>导入样式 实际上:就近原则,内嵌.链接.导入在同一个文件的头部,谁距离相应的代码近,谁的优先级别就更高一些.相当

css基础和心得(二)

css中的某些样式是具有继承性的.它允许样式不仅应用于某个特定html标签元素 而且应用于其后代.如: p{color:red;}  <p>dsffd<spans>sdfasdf</span>sd</p> 注意有些css样式是不具有继承性的.如border:1px solid red;这里的设计很合理 css有个特殊性,标签的权值为1,类选择符的权值为10,id选择符的权值最高为1 00. 注意,还有一个权值比较特殊,继承.继承也有权值但是它是最低的. 突然

css基础和心得(一)

css开始 p{ font-size:12px; color:red; font-weight:blod } p为选择符p{}又称选择器,指明网页中要应用样式规则的元素.属性和值之间用 ":"分隔.注意:最后一条声明可以没有分号,但是为了以后修改方便,一般也加 上分号:为了使用样式更加容易阅读,可以将每条代码写在一个新行内. css样式分为:内联式.嵌入式和外部式 内联式:css样式表就是把css代码直接写在现有的html标签中,如: <p style="color:r

CSS基础学习十五:盒子模型补充之外边距合并

今天继续接着CSS盒子模型补充,CSS基础学习十三:盒子模型和CSS基础学习十四:盒子模型补充之display属 性设置都是介绍了盒子模型中的内容概括.开始今天的主题:外边距合并. 外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距.合并后的外边距的高度等于两个发生合 并的外边距的高度中的较大者. (1)外边距合并 外边距合并叠加是一个相当简单的概念.但是,在实践中对网页进行布局时,它会造成许多混淆.简单地说,外 边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距.合并后的

蓝鸥零基础学习HTML5—html+css基础

蓝鸥零基础学习HTML5-html+css基础 一.课程目标 1.了解前端开发职位:2.掌握常用标签以及语义及用法:3.掌握常用css的特性,掌握基础布局技巧:4.掌握整站规划概念. 二.适用人群 零基础积极学习html5者 三.课程简介 本课程主要讲解了 html+css的基础知识,包括html模板.标签.css基础样式.布局.表格表单.整站等等,是进行前端开发的基础.Html+css是前端开发的基础,大部分前端开发工程都需要从html+css布局开始,html+css的基础非常重要,是前端开

Form标签+Css基础

一.Form表单标签 <form action="" method=""></form> 表单就是用来将用户的信息提交到服务器,服务器会将信息存储或者根据信息查询数据(增删改查). 表单中所有的内容都要写在form标签中. <input type="text" value="哈哈哈哈" placeholder="请输入用户名"> Input文本输入框,type类型为tex

html和css基础知识

一,html+css基础1-1Html和CSS的关系学习web前端开发基础技术需要掌握:HTML.CSS.JavaScript语言.下面我们就来了解下这三门技术都是用来实现什么的:1. HTML是网页内容的载体.内容就是网页制作者放在页面上想要让用户浏览的信息,可以包含文字.图片.视频等.2. CSS样式是表现.就像网页的外衣.比如,标题字体.颜色变化,或为标题加入背景图片.边框等.所有这些用来改变内容外观的东西称之为表现.3. JavaScript是用来实现网页上的特效效果.如:鼠标滑过弹出下

w3school CSS基础教程

一.基础法则: 类名的第一个字符不能使用数字,否则无法在Firefox中起作用: 不要在属性值和单位之间留空格,否则在Firefox或Netscape中无法正常工作. 二.背景(background): background-color不能继承,默认值是transparent.若一个元素未指定背景色,其背景为透明,其祖先元素的背景则可见,由此显现出来: background-position中若只出现一个关键字,则默认另一个是center:若只提供一个百分数,所提供的值作为水平值,垂直值默认为5