现在来说相对定位:
如果想为元素设置层模型中的相对定位,需要设置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的一些基础方面知识就说的差不多了。希望各位记住一点,一定要端
正自己的态度,态度决定高度。一定不能眼高手低,不然会跟我一样吃了很多很多
亏才好不容易绕回来。

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

  1. css基础和心得(三)

    OK!接下来我们分别说这些元素的意义.首先,什么是块级元素?在html中<div>,<p>,<h1>,<form>,<ul>和<li& ...

  2. CSS基础知识笔记(四)

    元素分类 标签元素大体被分为三种不同的类型:块状元素.内联元素(又叫行内元素)和内联块状元素. 常用的块状元素有: <div>.<p>.<h1>...<h6& ...

  3. css基础和心得(二)

    css中的某些样式是具有继承性的.它允许样式不仅应用于某个特定html标签元素 而且应用于其后代.如: p{color:red;}  <p>dsffd<spans>sdfasd ...

  4. css基础和心得(一)

     css开始 p{    font-size:12px;    color:red;    font-weight:blod } p为选择符p{}又称选择器,指明网页中要应用样式规则的元素.属性和值之 ...

  5. HTML/CSS基础知识(四)

    WEB标准和W3C的理解与认识 Web标准是一系列标准的集合. 网页主要由三部分组成:结构(Structure).表现(Presentation)和行为(Behavior). 对应的标准也分三方面:结 ...

  6. 妙味课堂——HTML+CSS基础笔记

    妙味课堂的课程讲得非常的清楚,受益匪浅.先把HTML和CSS基础课程部分视频的学习笔记记录如下: padding #PS基础 ##前端需要的PS技能 - PS技能(前端需要):切图.修图.测量 - P ...

  7. Bootstrap<基础二十四> 缩略图

    Bootstrap 缩略图.大多数站点都需要在网格中布局图像.视频.文本等.Bootstrap 通过缩略图为此提供了一种简便的方式.使用 Bootstrap 创建缩略图的步骤如下: 在图像周围添加带有 ...

  8. CSS基础(01)

    1. Css基础 1.1 CSS(层叠样式表 Multiple Styles)   CSS 是 Cascading Style Sheets(层叠样式表)的简称. CSS 语言是一种标记语言,它不需要 ...

  9. CSS基础知识之float

    前段时间写过一篇CSS基础知识之position,当时对float的理解不太准确,被慕课网多名读者指出(原文已修正,如有误导实在抱歉).现对float进行更深入的学习,在此把学习心得分享给大家. 浮动 ...

随机推荐

  1. [原]MobileSubstrate 工作流程

    [附-腾讯安全管家替换 MobileSubstrate 的流程] com.qq.mqqsecure.deb-postinst--->QSCommand--->QSTempRunner

  2. 前端css:“圣杯布局”

    昨天面试前端,一面危险通过,面试官建议我看看“圣杯布局”,听起来很玄妙的名字,花了一晚上弄明白怎么回事,惊讶于前端工作的细节和技巧! 我先看几个基础,在后面要用到的: 1.CSS right/left ...

  3. easyui tree 判断是否是叶子节点

    <input class="add" id="add" style="display: none" type="submit ...

  4. 三种工厂模式的分析以及C++实现

    三种工厂模式的分析以及C++实现 以下是我自己学习设计模式的思考总结. 简单工厂模式 简单工厂模式是工厂模式中最简单的一种,他可以用比较简单的方式隐藏创建对象的细节,一般只需要告诉工厂类所需要的类型, ...

  5. JDBC连接数据库(MySQL)

    package com.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSe ...

  6. Haskell 笔记(三)类型系统

    类型 (Type) Haskell的类型系统式静态类型系统,在编译的时候就知道数据类型,所以不同类型的值运算在编译的时候就会报错,比如用布尔值和整数运算,在C语言中这种运算就不会报错. Haskell ...

  7. js 调用父窗口的方法

    opener.show(); 父窗体需要顶一个show() 方法 父面页代码: <!DOCTYPE HTML PUBLIC "-//IETF//DTD LEVEL1//EN" ...

  8. 从零开始学C++之构造函数与析构函数(一):构造函数、析构函数、赋值与初始化、explicit关键字

    一.构造函数.默认构造函数 (1).构造函数 构造函数是特殊的成员函数 创建类类型的新对象,系统自动会调用构造函数 构造函数是为了保证对象的每个数据成员都被正确初始化 函数名和类名完全相同 不能定义构 ...

  9. Wget 命令详解

    Wget主要用于下载文件,在安装软件时会经常用到,以下对wget做简单说明. 1.下载单个文件:wget http://www.baidu.com.命令会直接在当前目录下载一个index.html的文 ...

  10. php 写商城网站的总结吧

    ---恢复内容开始--- 在兄弟连培训,这半个月在做一期项目,期间学到了很多东西,可是还有好多没有学会灵活运用.今天在登录界面加入验证码的时候,form提交不过去input里面的验证码,session ...