1. 程式人生 > >flex 相容IE8,flex相容IE7,通過clear both清除浮動和float 實現相容IE的flex佈局

flex 相容IE8,flex相容IE7,通過clear both清除浮動和float 實現相容IE的flex佈局

   vue 配合 element-ui 佈局時,因element佈局容器預設flex佈局,而ie9不相容。為了使ie9上能良好的表現彈性佈局,查詢到以下部落格,完美解決。xi

一、float 佈局

float使元素脫離文件流,並且父元素內的其他的行內元素或者文字都會圍繞著他放置。

下面我們現寫一段float的佈局程式碼,來看一下float的作用。

<div class="fcont"><span class="fspan">我是行內元素1</span><div class="fleft">看,我跑左邊了<Br/>而且我不受父元素控制<br>
哈哈哈</div><div class="fright">嘿,那我站右邊<Br/>我也不受父元素控制。<br/>哈哈哈</div><span class="fspan">我是行內元素2</span><div class="fafter">我是浮動元素後面內容</div></div><div class="fafter">我是浮動元素後面內容</div>

樣式程式碼如下:

.fcont{border:1px solid darkorange;box-sizing:border-box;
padding:8px;}.fleft{float:left;border:1px solid lightcoral;background:#fff;padding:12px;line-height:26px;}.fright{float:right;border:1px solid lightseagreen;background:#fff;padding:12px;line-height:26px;}.fafter{line-height:32px;margin-top:12px;text-align:center;background:darkorange;}.fspan{border:1px solid darkgoldenrod;
margin-left:6px;}

程式碼執行效果如下:

float2.png

從上圖效果看,float:left的元素跑到的左邊,float:right的元素跑到了右邊。

父元素內的兩個span都圍繞著左浮動元素,因為預設是text-align:left,如果設定text-align:right,兩個span就會圍繞右浮動元素。

兩個浮動元素已經脫離了文件流,他們並沒有撐開父元素的高度。並且其後的block元素也沒有跟隨在他們後面,而是跟隨在非浮動元素的後面。

這已經使得我們的佈局錯落了,我們要想讓浮動元素撐開父元素,迴歸文件流,就需要用到clear來實現這一效果。

二、clear both清除浮動

clear用來清除浮動,可以用在浮動元素上,也可以用在非浮動元素上。

clear:left用來清除左浮動,

clear:right用來清除右浮動,

clear:both清除所有的浮動。

三、clear 用在float元素上

我們把上面的fright元素給他新增一個clear both樣式,

並將兩個block的text-align改為left,這樣效果看的更明顯些。

.fright{float:right;border:1px solid lightseagreen;background:#fff;padding:12px;line-height:26px;clear:both;}.fafter{line-height:32px;margin-top:12px;text-align:left;background:darkorange;}

效果如下:

floatclear.png

可以看到,右浮動元素的頂部是從左浮動元素的底部開始的。但是依舊沒有撐開父元素,這說明應用在浮動元素上的clear both只是對浮動元素起作用,對文件流中的元素不起作用。

四、clear both應用在非浮動元素上

我們把clear both樣式加在非浮動元素上面,注意只能加在display:block的塊狀元素上,在inline的行內元素上不起作用。

.fafter{line-height:32px;margin-top:12px;text-align:center;background:darkorange;clear:both;}

效果如下:

clearboth.png

加在非浮動元素上的clear:both清除了浮動元素對其後面塊狀元素的影響,並且讓浮動元素撐開了父元素。達到了一般佈局的目的。

清除浮動這個功能樣式我們還可以利用:before,after偽類來實現。

:after 偽類清除浮動的程式碼

.clearfix:after{content:"";display:block;clear:both;}

content屬性是必須的,不能缺少。有content屬性才能在父元素尾部新增內容。通過設定display:block使其成為塊狀元素。clear:both用來達到清除浮動的功能。

給fcont父元素新增clearfix樣式後效果如下:

clearfix.png

通過偽類實現的clear both清除浮動後,float元素可以撐開父元素,並且父元素後的塊狀元素也不受float影響了。但是父元素fcont內部的塊元素還是受float影響。所以通過偽類實現clear both 清除浮動的功能,我們要避免在包含浮動的父元素中使用塊狀元素。

去除父元素內的塊狀元素後效果如下:

clearfix2.png

完美,實現了清浮動的效果。體現了clear both的價值了。

網上好多相容性清浮動程式碼如下:

.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{content:"";display:table;line-height:0;visibility:hidden;}.clearfix:after{clear:both;}

上面這段程式碼,據說是相容到IE6,我覺得沒必要用。反正從我進入前端這行到現在,我都沒見過IE6瀏覽器,即使前些年在銀行外包的時候用過最老的IE也是IE7。而現在相容性要求最強烈的公司也最多要求到IE8,直接採用一行clearfix的清浮動,完全能滿足我們的程式碼需求。

float和clear both的妙用,實現flex佈局

效果圖如下:

clearflex.png

你可以拖動瀏覽器大小,中間內容是不同的,跟橫向的flex效果是一樣一樣的。他跟margin負值的雙飛翼佈局不同,margin負值是兩側的寬度是確定的,我們這個佈局的妙處就是兩個float元素的寬度是不確定的,根據內容自適應的寬度。

上一下程式碼

樣式程式碼如下:

.dfcont{border:1px solid darkorange;box-sizing:border-box;padding:8px;}.dfleft{float:left;border:1px solid lightcoral;background:#fff;padding:12px;line-height:26px;}.dfright{float:right;border:1px solid lightseagreen;padding:12px;line-height:26px;}.dfafter{line-height:32px;margin-top:12px;

相關推薦

flex 相容IE8flex相容IE7,通過clear both清除浮動float 實現相容IE的flex佈局

   vue 配合 element-ui 佈局時,因element佈局容器預設flex佈局,而ie9不相容。為了使ie9上能良好的表現彈性佈局,查詢到以下部落格,完美解決。xi一、float 佈局float使元素脫離文件流,並且父元素內的其他的行內元素或者文字都會圍繞著他放置。下面我們現寫一段float的佈局

全選功能的實現(相容ie8可以部分禁用)

注: 1.引數兩個,第一個引數為全選按鈕的選擇器,第二個引數為除全選按鈕外的其他複選框的父元素的選擇器,如果其父元素為table,選擇器要寫為 "table tbody"。 2.可有部分按鈕禁用(disabled),例如 <!DOCTYPE html> <

前端檔案上傳一整套流程(相容IE8解決 input標籤必須主動點選等問題)

1.基本思路 在谷歌下以<input type=’file’/>為基本的條件,並且使他隱藏,通過點選提交按鈕被動觸發上傳檔案的事件,這裡不需要用到表單提交的相關問題,在js方面,使用formData,通過獲取<input type=”file”>標籤的files屬性,來獲

bootstrap輪播圖相容IE8文字背景變透明

<div id="myCarousel" class="carousel slide" data-ride="carousel"> <!-- 輪播(Carousel)指標 --> <ol class="carousel-indic

FileUpload 相容IE8火狐

FileUpload 上傳以後還有相容問題 加入下面的一些程式碼可以解決問題。程式碼是從網上找的 。IE8 和谷歌都是沒問題的餓 jQuery .extend({ createUploadIframe : function(id, uri) { va

flex 布局flex-grow 寬度未等比放大問題解決辦法

sin 內容 原理 rect direction 布局 理解 any ack 本文轉載自:https://blog.csdn.net/sinat_41695090/article/details/79215893 先粘貼上一段代碼,flex總體布局    <bo

常用清除浮動方式與瀏覽器相容

 1、父級div定義height  此種方法只適合固定height的使用,不存在瀏覽器相容問題。 2、:after/:before(推薦)  .clearfix:after{    content:"

使用after偽類配合IE的zoom或者overflow清除浮動

用after偽類實現,相容多種瀏覽器:.clearfix:after {content:"."; display:block; height:0; clear:both; visibility:hidden;overflow:hidden;} 為了相容IE6、IE7,加上下面程式碼: .clearfix{

上傳圖片預覽-相容IE6IE7IE8FF

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://

相容IE8頁面點選繫結

情況:繫結整個頁面點選事件時,IE8失效,所以做了以下相容 程式碼: 第一種:(else內的方式繫結,只有谷歌等瀏覽器可以,IE8不可以) //判斷是否為IE8(showModalDialog為IE8特有彈窗方法) if(window.showModalDialog){   &

ajax在老的瀏覽器中有相容問題可以通過另一種方式代替

var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObjet('Microsoft.XMLHTTP')

input file 實現上傳預覽圖片,以base64上傳相容IE8+,firefox,chrome

前言 最近在公司開發一個專案,其中涉及到一個公能,主要是上傳一些小圖片,而且在網站上需要大量引用這個小圖片的,對於上傳一些小的頭像等。一開始覺得直接上傳就好了,但是發現這樣子的話,一個小圖片就會發送一個http請求資源,大量的小圖片的請求資源的話,會造成伺服器資源的負擔。而

JavaScript事件繫結、事件解除、DOM載入完成相容IE8+

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-e

遮蔽瀏覽器右鍵選單功能自定義右鍵選單(相容IE8

做了個自定義右鍵選單的功能,和獲取選中文字內容相關,一起記錄一下。 網上查閱嘗試了很多方式,選擇了一個較為簡潔的方式實現,程式碼很少,進行細節調整後發現存在IE8相容性問題,又查閱資料後進行了優化,目前可以完美相容IE8,但注意jQuery版本必須1.7+,我

【CSS】多行文字垂直自適應居中 相容FFChrome ,IE8+

工作中遇到如(圖1)顯示的要求:一共3行文字,不管幾行的情況都要與左邊的圖片居中對齊, 乍一看覺得不太可能,一般的思維都是用margin-top來留出上面的空間。 (圖1) 思考了一下,覺得只有表格才能做到這樣的佈局,那就來模擬一下表格吧! 把文字區域定為a,把外框定

自定義滾動條(原生相容ie8以上)

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Document</title> </head> &l

圖片鋪滿整個瀏覽器相容ie8的寫法

<img class="bg-ie8" src="images/bg2.png"> .bg-ie8 {  display:none; display /*\**/:inline\9 ; z-index:1; position:absolut

css控制滑鼠移動到DIV層上更換背景色顏色相容IE6IE7FF

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w

一個典型的flex布局兼容性比較好

ati flex 垂直居中 content footer tom light round nes html 代碼: <body class="flex-wrap col-flex"> <header class="midCenter flex-w

display:flex 的彈性盒子中flex-grow:2 不生效的解決方法

style width 第一個 生效 解決 彈性盒子 三分 isp row 在使用 display:flex 的彈性盒子時,用到flex-grow:2 時不生效,只需在flex-grow:2 的前面增加一行css: width:0 即可 <div style="