成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

-Webkit-Box 在 Safari 中出現的兼容性問題(bug?)

開發 前端
多套一層,由外層控制元素多行截斷,最里層去實現浮動環繞的效果,避開因為 flex 容器而導致子元素浮動失效的情況。

[[430195]]

本文轉載自微信公眾號「志語自樂」,作者linxz。轉載本文請聯系志語自樂公眾號。

問題來源背景

這個是當時在『iCSS前端CSS交流討論』群中看到的,當時轉為朋友的提問是這樣的:

看這個圖,主要是有兩點:多行截斷和 tag 環繞。多行截斷那就是用 -webkit-box 那種方式,tag 環繞呢那就是早期圖文環繞的方式,用 float 就好了。

理想是豐滿的,現實是骨感的。未經他人之苦,一切都是那么輕松。當我提到說使用 float 就可以實現后,群里有朋友反饋說在 Safari 和移動端會有問題。

事實上我的確也沒在意過,于是事后嘗試了一下,的確如此。

摸索前進

這是一個比較奇怪的現象,首先就我個人而言的確是沒有見到過這樣的情況,之前都沒有這樣類似的需求。

初次嘗試

在沒有查閱任何資料之前,直接做了一個最簡單的 demo 看效果。

  1. <div class="text-overflow"
  2.   <span class="tag">new</span> 
  3.   很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容 
  4. </div> 

 

 

一個很簡單的 HTML 結構和一份很簡單的 CSS 樣式。

  1. .text-overflow { 
  2.   width: 200px; 
  3.   overflow: hidden; 
  4.   display: -webkit-box; 
  5.   -webkit-line-clamp: 2; 
  6.   -webkit-box-orient: vertical; 
  7.   font-size: 13px; 
  8.   line-height: 1.425; 
  9.   background-color: pink; 
  10. .tag { 
  11.   floatright
  12.   padding: 0 2px; 
  13.   color: #fff; 
  14.   background-color: #f32600; 
  15.   border-radius: 2px; 

最終的效果就是前面所看到的,在 Chrome 中很完美地得到期望結果,但是 Safari 中發現 tag 不見了,并且有一條空白存在。

按照常規想法,一般這種內容突然不見的,如果不是被截斷了就是被覆蓋了,或者渲染有問題。嘗試性在 .tag 中增加了 position: relative; 看看效果,發現 tag 出現了,并且是獨占一行。

設想

tag 獨占一行,說明至少有類似 block 塊級元素的特性存在,而 float 之后本身就是會將元素轉為塊級。想到這里,突然想到,-webkit-box 這個是早期版本的 flex 布局,那會不會就跟 display: flex; 這個一樣,當有了 flex 容器之后,flex 元素就不再是 BFC、IFC 之類的,而是 FFC 呢?

如果真是這樣的話,那么是不是就可以多嵌套一層,由最外層控制文本多行截斷,最里層控制 tag 的浮動效果呢?于是改變一下 HTML 結構。

  1. <div class="box"
  2.   <div class="text-overflow"
  3.     <span class="tag">new</span> 
  4.     很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容很多文本內容 
  5.   </div> 
  6. </div> 

 

 

 

 

在原有的基礎上,增加一層,CSS 部分也改變一下,其實只要把選擇符 .text-overflow 換成 .box 就可以了。

  1. .box { 
  2.   width: 200px; 
  3.   overflow: hidden; 
  4.   display: -webkit-box; 
  5.   -webkit-line-clamp: 3; 
  6.   -webkit-box-orient: vertical; 
  7. .tag { 
  8.   floatright
  9.   padding: 0 2px; 
  10.   color: #fff; 
  11.   background-color: #f32600; 
  12.   border-radius: 2px; 

那么最終的結果就是這樣。也就是說的確是 -webkit-box 的影響,而且應該就是 FFC 的關系。至于瀏覽器中差異可能就是兼容性問題了。

查資料

既然 -webkit-box 是早期 flex 布局的一個版本,那么必定還有其他一些屬性,比如以下幾個:

  • box-pack;
  • box-align;
  • box-orient;

那么就按照這個思路,我們可以看看 flex 相關的資料文檔。

在之前的 flex 教程文檔(https://www.yuque.com/linxz/flex)有關 display: flex; 有過介紹,前面也提到了 FFC,那么具體的我們也可以從 w3c 文檔中看到:

A flex container establishes a new flex formatting context for its contents. This is the same as establishing a block formatting context, except that flex layout is used instead of block layout. For example, floats do not intrude into the flex container, and the flex container’s margins do not collapse with the margins of its contents. Flex containers form a containing block for their contents exactly like block containers do. [CSS21] The overflow property applies to flex containers.

以上內容來自:https://www.w3.org/TR/css-flexbox-1/#flex-formatting-context

其中 A flex container establishes a new flex formatting context for its contents. 和 floats do not intrude into the flex container,至少說明了在 flex 布局中,浮動是有“可能”是無效的。

我的結論

針對這個問題的處理方式,我的結論,是的,僅僅只是代表我個人的一個結論就是:多套一層,由外層控制元素多行截斷,最里層去實現浮動環繞的效果,避開因為 flex 容器而導致子元素浮動失效的情況。

 

責任編輯:武曉燕 來源: 志語自樂
相關推薦

2009-06-04 20:31:05

Eclipse和CDT

2022-03-08 14:46:33

前端Web瀏覽器

2010-08-23 09:23:48

IEFirefox兼容性

2010-09-15 11:26:05

IE火狐CSS兼容性

2010-08-20 14:27:23

IE火狐CSS

2010-09-15 09:21:11

IEirefoxJavascript

2010-11-30 15:18:32

Office

2011-04-12 16:51:29

Javascript兼容性

2010-11-26 14:21:49

Office 套件

2010-09-16 11:08:50

JSIEFirefox

2010-05-26 16:39:29

2011-05-18 09:16:42

Windows Ser兼容性

2009-06-05 08:58:30

2010-09-15 10:32:54

IE8兼容

2009-01-20 19:36:48

服務器虛擬化VMware

2010-08-17 14:51:05

IE8兼容性

2010-08-18 09:24:09

IE6兼容性

2009-06-11 14:33:16

Windows 7微軟操作系統

2010-10-09 12:58:59

JS腳本兼容

2010-08-18 09:14:58

IE6兼容性
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 老熟女毛片 | 免费a网 | 欧美一级黄色免费 | 911网站大全在线观看 | 青娱乐自拍 | 2021狠狠干| 日韩av啪啪网站大全免费观看 | 日韩三级电影在线看 | 日本aaa视频 | 久久国产成人 | 成人在线一区二区 | 一区二区三区四区在线 | 成人精品一区二区 | 精品亚洲一区二区三区四区五区高 | 国产一区二区美女 | 91久久精品国产91久久 | 亚洲欧美国产精品久久 | 伊人网综合在线观看 | 99热精品6 | 婷婷在线免费 | 粉嫩在线| 99精品网 | 国产96在线 | 一区二区三区久久 | 久草中文在线观看 | 日韩免费 | 91精品中文字幕一区二区三区 | 日韩一区精品 | 国产激情一区二区三区 | 日韩精品 电影一区 亚洲 | 欧美成年人 | www.天天操.com | 精品国产精品 | 久久精品视频一区二区 | 亚洲一区二区三区免费在线 | 国产欧美一区二区三区免费 | 亚洲午夜精品在线观看 | 涩涩视频在线观看 | 蜜月aⅴ免费一区二区三区 99re在线视频 | 国产精品久久久久久久久久久久 | 欧美亚洲视频在线观看 |