日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > CSS >内容正文

CSS

css 商城 两列_CSS 居中?来一探究竟

發布時間:2023/12/19 CSS 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 css 商城 两列_CSS 居中?来一探究竟 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章作者:家園工作室研發組成員

文章出處:

CSS 居中?來一探究竟 | Wzb's Blog?wzb.me

「居中」是進行布局時最常見的需求之一了。CSS 有多種居中的方式,在什么時候挑選適合的方案?是一個值得思考的問題。

法律聲明

警告:本作品遵循 署名-非商業性使用-禁止演繹 4.0 未本地化版本(CC BY-NC-ND 4.0) 協議發布。

這是什么?

寫在前面

本文將會按照具體場景來選擇相應的居中方式,幫助你系統地理清 CSS 居中。

注意:為了簡潔,文中給出的 CSS 代碼只會給出關鍵的定義布局的代碼。

在水平方向上的居中(Horizontally Centering)

對于行內(inline / inline-* )元素

要將行內元素居中,只需要給其父塊級元素(block-level parent element)定義以下 CSS 規則:

.block-level-parent-of-inline-element {text-align: center; }

這對 inline inline-block inline-table inline-flex etc. 都生效

text-align 不僅僅是針對于 text 的對齊描述,實際上,它影響的是塊級元素下的行內元素與文本(inline contents)。

參考:text-align - CSS | MDN

對于塊級元素(block element)

要將塊級元素居中,給其定寬(width)之后定義以下 CSS 規則

.block-element {margin: 0 auto; }

如果沒有給定塊級元素寬度?那它會充滿整行,以至于不需要居中了...

就像這樣

如果有多個塊級元素?

如果你想將多個塊級元素在水平方向上居中,有以下兩種方法。

  • 將多個塊級元素設置 display: inline-box; 然后給父級元素定義 text-align: center;(與上文的行內元素居中同理)
.parent {text-align: center; } .block-elements {display: inline-block; }

  • 使用 Flexbox
.parent {display: flex;justify-content: center; }

在豎直方向上的居中(Vertically Centering)

對于行內(inline / inline-* )元素

比如文字(text)和鏈接(links)

只有一行時

  • 要讓行內元素/文字看起來在豎直方向上的中間,可以給其定義上下相等的內邊距(padding)
a {padding-top: 20px;padding-bottom: 20px; }

  • 還有一種方案是,將文字的行高值設置與其元素高度相同。
.box {height: 60px;line-height: 60px; }

仔細思考,如果文字的內容超過一行,或者是父級元素的大小在響應式變化的情況下變小導致文字需要換行,會出現這樣的情況。

解決這個問題,只需要設置文字不換行即可

.box {height: 60px;line-height: 60px;white-space: nowarp; }

有多行文字時

  • 同樣的,可以給元素設置上下相等的 padding,讓文字看起來在中間
  • 將父元素定義為 display: table; 同時將子元素設置為 display: table-cell; 并且給予 vertical-align: middle; 屬性。
.box {display: table;height: 60px; }.box p {display: table-cell;vertical-align: middle; }
  • 使用 Flexbox 居中

將文字放在塊級元素中,給其父元素使用 Flex

.box {display: flex;flex-direction: column;justify-content: center; }

以上效果相同,如下圖。

對于塊級(block)元素

已經確定塊級元素的高度

在實際情況下,很少會明確地確定某一個元素的高度。如果真的能夠確定某個元素的高度,可以使用下面的方法。

.parent {position: relative; } .child {position: absolute;top: 50%;height: 100px;margin-top: -50px; }

這里需要注意的是 top 屬性的計算方法,可以參考 CSS - top | MDN。

不能確定塊級元素的高度

我們仍可以使用與上例類似的方法,不過需要使用 transform 屬性。

.parent {position: relative; } .box {position: absolute;top: 50%;transform: translateY(-50%); }對于 translate 的計算方式,可以參考 Is the CSS3 transform translate percentage values relative to its width and/or height? - Stack Overflow

如果你不在乎元素撐大的話

你不在乎元素是否撐開,只想要它的內容豎直居中,可以使用 table 或者是 CSS display 將其變成 table 行為。

main {padding: 5px;display: table; } main div {display: table-cell;vertical-align: middle; }

可見,元素被撐大了。

Flexbox

使用 Flexbox 在豎直方向上居中是同樣的方便。

.parent {display: flex;flex-direction: column;justify-content: center; }

水平和豎直方向上同時居中

你可以將上面的方法結合使用達到此目的。不過這里總結了幾種比較方便的方式。

元素確定了高度和寬度時

使用絕對定位之后,設置為負的margin屬性,其值等于 高度/寬度 的50%。

.parent {position: relative; }.child {height: 60px;width: 180px;position: absolute;top: 50%;left: 50%;margin: -30px 0 0 -90px; }

這樣進行居中的瀏覽器兼容性非常好。

不確定元素高寬

與上例相同,使用絕對定位,不過換成了 translate 屬性。

.parent {position: relative; }.child {position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%); }

Flexbox

相信你已經想到了 Flexbox 如何實現,只需要把主軸和側軸方向上都設置為居中就好了。

.parent {display: flex;justify-content: center;align-items: center; }

Gird

對于居中一個元素來說,可以使用 Gird 的 trick。

.parent {display: grid; } .parent div {margin: auto; }

寫在最后

現在你對居中的方法與選擇有了清楚的認識,你再也不怕居中了。XD

References

  • Centering in CSS - CSS Tricks
  • MDN
  • Flex 布局教程 - 阮一峰的博客
  • CSS Transforms Module Level 1 - W3C Candidate Recommendation

總結

以上是生活随笔為你收集整理的css 商城 两列_CSS 居中?来一探究竟的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。