pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

CSS中Position、Float屬性深入探討

對于Position、Float我們在平時使用上可以說是使用頻率非常高的兩個CSS屬性,對于這兩個屬性的使用上面可能大多數(shù)人存在一些模糊與不清晰的地方。本文主要對這兩個屬性使用上的一個

  對于Position、Float我們在平時使用上可以說是使用頻率非常高的兩個CSS屬性,對于這兩個屬性的使用上面可能大多數(shù)人存在一些模糊與不清晰的地方。本文主要對這兩個屬性使用上的一個介紹以及兩個屬性 交叉使用上的一些探討。

  本文主要探討點:

  1. Position、Float屬性的基本使用方法
  2. Position、Float屬性對元素所造成的影響
  3. Position、Float屬**叉使用上面的影響
  4. Position、Float屬性使用上的小技巧

  本文結構點:

  1.HTML布局的基本要點

  盒子模型

  HTML的普通流

  2.Position屬性

  屬性值介紹

  用法介紹

  一些關于position的小知識

  3.Float屬性

  屬性值介紹

  用法介紹

  與Position之間的兼容問題

  HTML布局的基本要點:

  如果要掌握、運用好Position、Float屬性必須要對HTML的兩個基本點有清晰的了解。

  1.盒子模型(box model)

  2.HTML的普通流(normal flow)


  盒子模型

  在HTML中元素的盒子模型分為兩種:塊狀元素、行內(nèi)元素,請注意這里的塊狀元素(Block)和行內(nèi)元素(Inline)與Display屬性中的inline、block兩個屬性值并不等同。盒子模型中的Inline、Block類似于是Display屬性的父類,例如:Display屬性中的list-item屬性值是屬于塊狀(Block)類型的。


  我們直觀的上看兩種盒子模型的區(qū)別

  • 塊狀(Block)類型的元素可以設置width、height屬性,而行內(nèi)(Inline)類型設置無效。
  • 塊狀(Block)類型的元素會獨占一行(直觀的說就是會換行顯示,無法與其他元素在同一行內(nèi)顯示,除非你主動修改元素的樣式),而行內(nèi)(Inline)類型的元素則都會在一行內(nèi)顯示。
  • 塊狀(Block)類型的元素的width默認為100%,而行內(nèi)(Inline)類型的元素則是根據(jù)自身的內(nèi)容及子元素來決定寬度。

  

  列舉出一些大家常見的元素的分類

  • 塊狀元素:P、DIV、UL、LI、DD、DT…
  • 行內(nèi)元素:A、IMG、SPAN、STRONG…

  

  HTML的普通流

  瀏覽器在讀取HTML源代碼的時候是根據(jù)元素在代碼出現(xiàn)的順序讀取,最終元素的呈現(xiàn)方式是依據(jù)元素的盒子模型來決定的。行內(nèi)元素是從左到右,塊狀元素是從上到下。(如下圖)


strongemspan
A
B
C

  如果你不改變元素的默認樣式前提下,元素在HTML的普通流中會“占用”一個位置,而“占用”位置的大小、位置則是由元素的盒子模型來決定。因此,在后續(xù)講的Position、Float屬性是否會使元素脫離這個普通流是一個關鍵點。

  Position屬性:

  我們首先來談談Position屬性,因為Position屬性能夠很好的體現(xiàn)HTML普通流這個特征。重點在于應用了不同的position值之后是否有脫離普通流和改變Display屬性這兩點。

  Position屬性值

  Position的屬性值共有四個static、relative、absolute、fixed。

  Static

  所有元素在默認的情況下position屬性均為static,而我們在布局上經(jīng)常會用到的相對定位和絕對定位常用的屬性top、bottom、left、right在position為static的情況下無效。其用法為:在改變了元素的position屬性后可以將元素重置為static讓其回歸到頁面默認的普通流中。

  Relative

  俗稱的相對定位,重點在于對相對理解。我們此前說過每個元素在頁面的普通流中會有“占用”一個位置,這個位置可以理解為默認位置,而相對定位就是將元素偏離元素的默認位置,但普通流中依然保持著原有的默認位置,并沒有脫離普通流,只是視覺上發(fā)生的偏移

  我們先用塊狀元素來做個示例:

  
  
A
  
B
  
C

  右圖中的黑色虛線部分為元素B的默認普通流位置,而黃色線則代表元素B的相對偏移量。我們可以很明顯的看出在元素C依然還是保留在原位,并沒有因為元素B發(fā)生了偏移而隨之變化。

  我們再來看看行內(nèi)元素(在這里用大家最常用的span來做示例)


strongemspan

  請注意看,在這里我是有對span進行width屬性的賦值(為100px)。但是我們可以看到span在運用了relative這個position屬性值后,依然對width屬性無效,換而言之,position: relative并沒有改變行內(nèi)元素的Display屬性,這個概念非常重要(注意與接下來的absolute的區(qū)別)。

  Absolute

  俗稱的絕對定位,絕對定位是相對而言的,怎么理解呢?應用了position: absolute的元素會循著節(jié)點樹中的父(祖)元素來確定“根”,然后相對這個“根”元素來偏移。如果在其節(jié)點樹中所有父(祖)元素都沒有設置position屬性值為relative或者absolute則該元素最終將對body進行位置偏移。應用了position: absolute的元素會脫離頁面中的普通流并改變Display屬性(重點)!

  我們先用一個默認嵌套的DIV來做示例

    
A
A - 1
A - 2

  現(xiàn)在我們對A-2這個div設置絕對定位(Top: 0, Left: 0),而沒有對它的父元素(A、A-1)設置任何的position值

    
A
A - 1
A - 2

  可以看到(A-2)最終是根據(jù)body來產(chǎn)生了位移,讓我們對比分別設置一下父元素position。

  從上面的圖,我們可以總結以下幾個結論。

  1)塊狀元素在position(relative/static)的情況下width為100%,但是設置了position: absolute之后,會將width變成auto(會受到父元素的寬度影響)。

  2)元素設置了position: absolute之后,如果沒有設置top、bottom、left、right屬性的話,瀏覽器會默認設置成auto,而auto的值則是該元素的“默認位置”。即設置position: absolute前后的offsetTop和offsetLeft屬性值不變。

  特殊情況:

  • Firefox的話會直接將top、left設置成offsetTop和offsetLeft的值而非auto。
  • IE7下的表現(xiàn)更類似于float,會附加到父元素的末尾。

  一些的position小知識

  1)應用了position: relative/absolute的元素,margin屬性仍然有效,以position:relative來舉例。如果設置了left、top、bottom、right的屬性,建議大家不要設置margin數(shù)據(jù),因為很難精確元素的定位,盡量減少干擾因素。

  2)position: absolute忽略根元素的padding。

A
A - 1
A - 2

  3)在IE6/7中設置position屬性后會導致z-index屬性失效

a
b

  4)行內(nèi)元素在應用了position:absolute之后會改變display。


        我的display屬性由inline變成了block

  因此,要注意到relative是并沒有改變行內(nèi)元素的呈現(xiàn)模式,而absolute是會改變行內(nèi)元素的呈現(xiàn)模式,如果設置了absolute并不需要顯式的的將元素display改成block。

  5)應用了position: absolute / relative之后,會覆蓋其他非定位元素(即position為static的元素),如果你不想覆蓋到其他元素,也可以將z-index設置成-1。

  Fixed

  在很長的時間里,這個屬性值因為兼容性問題,并沒有得到非常廣泛的應用(IE6未實現(xiàn)該屬性值)。fixed和absolute有很多共同點:

  會改變行內(nèi)元素的呈現(xiàn)模式,使display之變更為block。

  會讓元素脫離普通流,不占據(jù)空間。

  默認會覆蓋到非定位元素上。

  fixed與absolute最大的區(qū)別在于:absolute的”根元素“是可以被設置的,而fixed則其”根元素“固定為瀏覽器窗口。即當你滾動網(wǎng)頁,其元素與瀏覽器窗口之間的距離是恒定不變的。

  Float屬性

  float的屬性值有none、left、right,有幾個要點:

  1.只有橫向浮動,并沒有縱向浮動。

  2.當元素應用了float屬性后,將會脫離普通流,其容器(父)元素將得不到脫離普通流的子元素高度。

  3.浮動元素的后一個元素會圍繞著浮動元素(典型運用是文字圍繞圖片),與應用了position的元素相比浮動元素并不會遮蓋后一個元素。

  4.浮動元素的前一個元素不會受到任何影響(如果你想讓兩個塊狀元素并排顯示,必須讓兩個塊狀元素都應用float)。

  與position的兼容性問題

  1)元素同時應用了position: relative、float、(top / left / bottom / right)屬性后,則元素先浮動到相應的位置,然后再根據(jù)(top / left / bottom / right)所設置的距離來發(fā)生偏移。

div

  左圖中的div是沒有設置top、left值的,而右邊則設置了50px的偏移。

  2)元素同時應用了position: absolute及float屬性,則float失效。

我是一個應用了position:absolute和float:left的DIV,不過我還是在瀏覽器的右邊,沒有浮動到左邊。

  3)第一個元素應用了position之后會覆蓋著接下來的float元素(如果兩個元素所處的位置相同)

我是一個應用了position:absolute的DIV。
我是float:left的DIV

回顧:如果你不將float的元素的position設置成relative的話,你想通過設置float元素的z-index來的達到覆蓋position:absolute是無效的。同理,float元素下面存在position: absolute的子元素,如果你不將float的元素的position設置成relative的話,absolute元素是不會定位到float元素的。

  4)同時應用position: absolute和float: left會導致清除浮動無效(position: relative則可以清除浮動)。

  常用的清除浮動的方法有兩種:

  1.通過在容器中添加一個標簽,設置該標簽的樣式為 clear: both

  2.容器設置overflow: hidden

我是DIV


來源:http://www.codeceo.com/article/css-position-float.html

【網(wǎng)站聲明】本站除付費源碼經(jīng)過測試外,其他素材未做測試,不保證完整性,網(wǎng)站上部分源碼僅限學習交流,請勿用于商業(yè)用途。如損害你的權益請聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

由于實際運行環(huán)境是在瀏覽器中,因此性能還取決于JavaScript解釋器的效率,指定的FPS幀速在低性能解釋器中可能不會達到,所以這部分不是開發(fā)者能夠決定的,開發(fā)者能作的是盡可能通
本文將使用HTML5提供的VideoAPI做一個自定義的視頻播放器,需要用到HTML5提供的video標簽、以及HTML5提供的對JavascriptAPI的擴展。,HTML5中國,中國最大的HTML5中文門戶。
隨著 Hybrid 應用的豐富,HTML5 工程師們已經(jīng)不滿足于把桌面端體驗簡單移植到移動端,他們覬覦移動原生應用人性化的操作體驗,特別是原生應用與生俱來的豐富的手勢系統(tǒng)。HTML5 沒有提
你想要在自己網(wǎng)站上分享一個產(chǎn)品,或者是一個作品集,又或者僅僅只是一個靈感。在你發(fā)布到網(wǎng)上之前,你想讓它看起來有吸引力,專業(yè),或者至少得看起來像那么回事。那么你接下
H5廣告,包括H5廣告的設計流程,究竟有什么講究,和階段。為了能幫助更多的人了解H5廣告,我專門做了一個講義。同時,也讓我意外的收到了非常好反饋和認!這是對我的極大鼓勵!我的
本文主要內(nèi)容有:框架與組件、構建生態(tài)、開發(fā)技巧與調(diào)試、html、css與重構、native/hybrid/桌面開發(fā)、前端/H5優(yōu)化、全棧/全端開發(fā)、研究實驗、數(shù)據(jù)分析與監(jiān)控、其它軟技能、前端技術網(wǎng)
主站蜘蛛池模板: 成都治疗尖锐湿疣比较好的医院-成都治疗尖锐湿疣那家医院好-成都西南皮肤病医院 | 济南展厅设计施工_数字化展厅策划设计施工公司_山东锐尚文化传播有限公司 | 齿辊分级破碎机,高低压压球机,立式双动力磨粉机-郑州长城冶金设备有限公司 | QQ房产导航-免费收录优秀房地产网站_房地产信息网 | 交通气象站_能见度检测仪_路面状况监测站- 天合环境科技 | 咖啡加盟,咖啡店加盟连锁品牌-卡小逗| 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 物流公司电话|附近物流公司电话上门取货| 实体店商新零售|微赢|波后|波后合作|微赢集团 | 环氧树脂地坪_防静电地坪漆_环氧地坪漆涂料厂家-地壹涂料地坪漆 环球电气之家-中国专业电气电子产品行业服务网站! | 欧必特空气能-商用空气能热水工程,空气能热水器,超低温空气源热泵生产厂家-湖南欧必特空气能公司 | 河南mpp电力管_mpp电力管生产厂家_mpp电力电缆保护管价格 - 河南晨翀实业 | 没斑啦-专业的祛斑美白嫩肤知识网站-去斑经验分享 | 济南菜鸟驿站广告|青岛快递车车体|社区媒体-抖音|墙体广告-山东揽胜广告传媒有限公司 | 旋振筛|圆形摇摆筛|直线振动筛|滚筒筛|压榨机|河南天众机械设备有限公司 | 培训中心-翰香原香酥板栗饼加盟店总部-正宗板栗酥饼技术 | 小港信息港-鹤壁信息港 鹤壁老百姓便民生活信息网站 | 塑料熔指仪-塑料熔融指数仪-熔体流动速率试验机-广东宏拓仪器科技有限公司 | VI设计-LOGO设计公司-品牌设计公司-包装设计公司-导视设计-杭州易象设计 | 激光内雕_led玻璃_发光玻璃_内雕玻璃_导光玻璃-石家庄明晨三维科技有限公司 激光内雕-内雕玻璃-发光玻璃 | 软启动器-上海能曼电气有限公司| 【孔氏陶粒】建筑回填陶粒-南京/合肥/武汉/郑州/重庆/成都/杭州陶粒厂家 | 深圳天际源广告-形象堆头,企业文化墙,喷绘,门头招牌设计制作专家 | HYDAC过滤器,HYDAC滤芯,现货ATOS油泵,ATOS比例阀-东莞市广联自动化科技有限公司 | 广州展览设计公司_展台设计搭建_展位设计装修公司-众派展览装饰 广州展览制作工厂—[优简]直营展台制作工厂_展会搭建资质齐全 | 能耗监测系统-节能监测系统-能源管理系统-三水智能化 | 喷漆房_废气处理设备-湖北天地鑫环保设备有限公司 | 上海公司注册-代理记账-招投标审计-上海昆仑扇财税咨询有限公司 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | 瓶盖扭矩测试仪-瓶盖扭力仪-全自动扭矩仪-济南三泉中石单品站 | 标准光源箱|对色灯箱|色差仪|光泽度仪|涂层测厚仪_HRC大品牌生产厂家 | 膜结构车棚|上海膜结构车棚|上海车棚厂家|上海膜结构公司 | 可程式恒温恒湿试验箱|恒温恒湿箱|恒温恒湿试验箱|恒温恒湿老化试验箱|高低温试验箱价格报价-广东德瑞检测设备有限公司 | 东莞注册公司-代办营业执照-东莞公司注册代理记账-极刻财税 | 中空玻璃生产线,玻璃加工设备,全自动封胶线,铝条折弯机,双组份打胶机,丁基胶/卧式/立式全自动涂布机,玻璃设备-山东昌盛数控设备有限公司 | 小型UV打印机-UV平板打印机-大型uv打印机-UV打印机源头厂家 |松普集团 | 电子万能试验机_液压拉力试验机_冲击疲劳试验机_材料试验机厂家-济南众标仪器设备有限公司 | 聚氨酯保温钢管_聚氨酯直埋保温管道_聚氨酯发泡保温管厂家-沧州万荣防腐保温管道有限公司 | 课件导航网_ppt课件_课件模板_课件下载_最新课件资源分享发布平台 | 石栏杆_青石栏杆_汉白玉栏杆_花岗岩栏杆 - 【石雕之乡】点石石雕石材厂 | 压力控制器,差压控制器,温度控制器,防爆压力控制器,防爆温度控制器,防爆差压控制器-常州天利智能控制股份有限公司 | 河南卓美创业科技有限公司-河南卓美防雷公司-防雷接地-防雷工程-重庆避雷针-避雷器-防雷检测-避雷带-避雷针-避雷塔、机房防雷、古建筑防雷等-山西防雷公司 |