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

在這3年開發中遇到的 CSS 問題及解決方案,有大佬幫他總結好了

新聞 前端
在瀏覽器中實現用戶界面時,請盡可能減少瀏覽器帶來的差異,以使用戶界面具有可預測性。跟蹤所有這些差異很困難,因此,我整理了一些常見問題及其解決方案方便大家查看。

 

在瀏覽器中實現用戶界面時,請盡可能減少瀏覽器帶來的差異,以使用戶界面具有可預測性。跟蹤所有這些差異很困難,因此,我整理了一些常見問題及其解決方案方便大家查看。

1.重置button和input元素的背景

添加一個按鈕時,重置它的背景,否則它會在不同的瀏覽器中看起來不同。在下面的例子中,同樣的按鈕在 Chrome 和 Safari 中,后者添加了默認的灰色背景。

在這3年開發中遇到的 CSS 問題及解決方案,有大佬幫他總結好了

重置按鈕的樣式可以解決些問題:

  1. button { 
  2.   appearance: none; 
  3.   background: transparent; 

事例源碼:
https://codepen.io/shadeed/pen/MzWBYv

2.Overflow: scroll Vs auto

要限制元素的高度并允許用戶在其中滾動,可以添加overflow: scroll-y。在 macOS 上的Chrome上會很好看。然而,在 Windows上,滾動條總是在那里(即使內容很短)。這是因為無論內容如何,scroll-y都會顯示滾動條,這時候我們可以使用overflow: auto,它只會在需要時顯示滾動條。

在這3年開發中遇到的 CSS 問題及解決方案,有大佬幫他總結好了
 
  1. .element { 
  2.     height: 300px; 
  3.     overflow-y: auto; 

事例源碼:
https://codepen.io/shadeed/pen/vQYwXj

3.添加 flex-wrap

對包含多個子元素使用 display: flex,如果元素過多,所有子元素會被壓縮,如下所示:

  1. <div class="wrapper"
  2.   <div class="item"></div> 
  3.   <div class="item"></div> 
  4.   <div class="item"></div> 
  5.   <div class="item"></div> 
  6.   <div class="item"></div> 
  7.   <div class="item"></div> 
  8. </div> 
  9.  
  10.  
  11. .wrapper { 
  12.   display: flex; 
  13.  
  14. .item { 
  15.   flex: 0 0 120px; 
  16.   height: 100px; 

面的例子在大屏幕上非常有用。在移動設備上,瀏覽器會顯示一個水平滾動條。

在這3年開發中遇到的 CSS 問題及解決方案,有大佬幫他總結好了

解決方法就是使用 flex-wrap: wrap,這樣當水平空間不夠時,瀏覽器會幫我們自動換行。

事例源碼:
https://codepen.io/shadeed/pen/JejVLG

4. 當 Flex 項目的數量是動態的時,不要使用justify-content: space-between

當將justify-content: space-between應用于flex容器時,它將分配元素并在元素之間留出相等的空間。我們的示例有8個卡片項,它們看起來不錯。如果,由于某種原因,項目的數量是7呢?第二行元素看起來與第一行不同。

在這3年開發中遇到的 CSS 問題及解決方案,有大佬幫他總結好了
在這3年開發中遇到的 CSS 問題及解決方案,有大佬幫他總結好了

在這種情況下,使用CSS網格會更合適。

事例源碼:
https://codepen.io/shadeed/pen/XyWLLo

5. 長單詞和鏈接

當在移動屏幕上閱讀一篇文章時,一個長單詞或內聯鏈接可能會導致出現水平滾動條。使用CSS word-break可以防止這種情況的發生

在這3年開發中遇到的 CSS 問題及解決方案,有大佬幫他總結好了

解決方法:

  1. .article-content p { 
  2.     word-breakbreak-all; 

6.透明漸變

當漸變是以 transparent 開始或者結束的時候,在Safari中看起來會有點黑。這是因為Safari不能識別關鍵字transparent,這里可以通過rgba(0,0,0,0)來解決該問題。請注意下面的截圖:

在這3年開發中遇到的 CSS 問題及解決方案,有大佬幫他總結好了

出問題的代碼:

  1. .section-hero { 
  2.   background: linear-gradient(transparent, #d7e0ef), #527ee0; 
  3.   /*Other styles*/ 

解決方式:

  1. .section-hero { 
  2.   background: linear-gradient(rgba(000,0), #d7e0ef), #527ee0; 
  3.   /*Other styles*/ 

7.關于CSS網格中auto-fit和auto-fill之間的差異的誤解

在CSS grid中,repeat函數可以創建響應列布局,而不需要使用媒體查詢。要做到這一點,使用auto-fillauto-fit即可。

  1. .wrapper { 
  2.     grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); 
在這3年開發中遇到的 CSS 問題及解決方案,有大佬幫他總結好了

簡而言之,auto-fill將在不擴展列寬的情況下對列進行排列,而auto-fit只會在列為空的情況下將列折疊到零寬度。

8. 當視口不夠高時將元素固定在屏幕頂部

如果將元素固定在屏幕頂部,如果視口不夠高會發生什么情況?很簡單:它會占用屏幕空間,因此,用戶瀏覽網站時可用的垂直區域就會變小,這會影響用戶的體驗。解決方法不是當用戶往下劃動的時候,固定頭部需要回到文檔中跟隨屏幕滾動,可以使用position: sticky來快速達到該效果。

  1. @media (min-height: 500px) { 
  2.     .site-header { 
  3.         position: sticky; 
  4.         top: 0
  5.         /*other styles*/ 
  6.     } 

在上面的代碼段中,我們告訴瀏覽器僅在視口的高度等于或大于 500`像素時才標題固定在頂部。

使用 position: sticky 還需要指定 top 值,不然它無法正常工作。

在這3年開發中遇到的 CSS 問題及解決方案,有大佬幫他總結好了

事例源碼:
https://codepen.io/shadeed/pen/oQLYmg

9.設置圖像的最大寬度

當添加圖像時,定義max-width: 100%,這樣當屏幕很小時圖像就會改變大小。否則,瀏覽器將顯示一個水平滾動條。

  1. img { 
  2.     max-width: 100%; 

10. 使用 CSS grid 定義 main 和 aside 元素

CSS grid 常規布局中 main 和 aside 部分,為了讓布局更加的完美,我們應該讓 aside 高度等于 main 高度,即使 aside 內容為空。

要解決這個問題,將aside元素對齊到其父元素的開始位置,這樣它的高度就不會擴大。

  1. .wrapper { 
  2.   display: grid; 
  3.   grid-template-columns: repeat(12, minmax(0, 1fr)); 
  4.   grid-gap: 20px; 
  5.  
  6. // align-self will tell the aside element to align itself with the start of its parent. 
  7. aside { 
  8.   grid-column: 1 / 4
  9.   grid-row: 1
  10.   align-self: start; 
  11.  
  12. main { 
  13.   grid-column: 4 / 13
在這3年開發中遇到的 CSS 問題及解決方案,有大佬幫他總結好了

事例源碼: 
https://codepen.io/shadeed/pen/yQJgXr

11. 向 SVG 添加 fill

有時,在使用 SVG 時,如果在 SVG 中以內聯方式添加了fill屬性,填充就不會像預期的那樣工作。要解決這個問題,可以從SVG本身刪除fill屬性,也可以覆蓋fill: color

舉個例子:

  1. .some-icon { 
  2.     fill: #137cbf; 

如果 SVG 具有內聯fill,這將不起作用,應該這樣寫:

  1. .some-icon path { 
  2.     fill: #137cbf; 

12. 使用偽元素

我經常使用偽元素,它們為我們提供了一種創建偽造元素的方法,主要用于裝飾目的,而無需將其添加到HTML中。

使用它們時,我們經常會忘記下面這些步驟:

  • 添加content: ""屬性
  • 設置 width 和 height 時沒有設置 display 導致 width 和 height無效

在使用偽元素的時候,記得要添加 content 屬性,不然會無法顯示其內容,別外也需要定義 display ,設置寬高才有效。

在這3年開發中遇到的 CSS 問題及解決方案,有大佬幫他總結好了

13. 使用 display: inline-block 會出現怪異的空格

為多個元素設置 display: inline-block或 display: inline,會在每個元素之間創建一個很小的空格。之所以會添加空格,是因為瀏覽器將元素解釋為單詞,因此在每個元素之間添加了一個字符空間。

在下面的示例中,每個項目的右側都有8px的空間,但是由于使用display:inline-block導致增加了一個空格,最后結果是12px,這不是期望的結果。

在這3年開發中遇到的 CSS 問題及解決方案,有大佬幫他總結好了

一個簡單的修復方法是在父元素上設置font-size: 0

  1. ul { 
  2.     font-size: 0
  3.  
  4. li { 
  5.     font-size: 16px; 
在這3年開發中遇到的 CSS 問題及解決方案,有大佬幫他總結好了

事例源碼:
https://codepen.io/shadeed/pen/qQYPxV

14. 為 input 元素配置 label 記得加上 for="ID"

在處理表單元素時,可以為label元素分配一個id,這將增加表單的可訪問性,當label 元素被點擊時,對應的 input 也會獲取焦點。

  1. <label for="emailAddress">Email address:</label> 
  2. <input type="email" id="emailAddress"
在這3年開發中遇到的 CSS 問題及解決方案,有大佬幫他總結好了

15. 字體與交互式HTML元素不兼容

當為整個文檔設置字體時,它們不會應用于inputbuttonselecttextarea等元素。它們在默認情況下不會繼承,因為瀏覽器將默認系統字體應用于它們。

要修復此問題,需要我們手動分配字體屬性:

  1. input, button, select, textarea { 
  2.   font-family: your-awesome-font-name; 

16. 水平滾動條

由于元素的寬度,有些元素會導致出現水平滾動條。

找到這個問題的原因最簡單的方法就是使用 「CSS outline」。Addy Osmani 分享了一個非常方便的腳本,可以添加到瀏覽器控制臺,列出頁面上的每個元素。

  1. [].forEach.call($$("*"), function(a) { 
  2.   a.style.outline = 
  3.     "1px solid #" + (~~(Math.random() * (1 << 24))).toString(16); 
  4. }); 
在這3年開發中遇到的 CSS 問題及解決方案,有大佬幫他總結好了

17. 壓縮或拉伸圖像

在CSS中調整圖像大小時,如果寬高比與圖像的寬度和高度不一致,則可能會對其進行壓縮或拉伸。

解決方法很簡單:使用CSS object-fit,它的功能類似于ackground-size: cover用于背景圖像。

  1. img { 
  2.     object-fit: cover; 
在這3年開發中遇到的 CSS 問題及解決方案,有大佬幫他總結好了

使用object-fit并不是在所有情況下都適用。有些圖片需要在沒有裁剪或調整大小的情況下顯示,有些平臺會強制用戶上傳或裁剪一個定義大小的圖片。例如,Dribbble接受以800 * 600像素上傳的縮略圖。

18. 為 input 添加正確的 type

為 input 添加正確的 type,會增強移動瀏覽器中的用戶體驗,并使其更易于用戶訪問。

假設有如下的 HTML 代碼:

  1. <form action=""
  2.   <p> 
  3.     <label for="name">Full name</label> 
  4.     <input type="text" id="name"
  5.   </p> 
  6.   <p> 
  7.     <label for="email">Email</label> 
  8.     <input type="email" id="email"
  9.   </p> 
  10.   <p> 
  11.     <label for="phone">Phone</label> 
  12.     <input type="tel" id="phone"
  13.   </p> 
  14. </form> 

下面是每個 input 元素在移動端輸入的樣子。

在這3年開發中遇到的 CSS 問題及解決方案,有大佬幫他總結好了

19. RTL 布局的電話號

在從右到左的布局中添加電話號碼(如+ 972-123555777)時,加號將定位在電話號碼的末尾。要解決這個問題,重新分配電話號碼的方向即可。

  1. p { 
  2. direction: ltr; 
在這3年開發中遇到的 CSS 問題及解決方案,有大佬幫他總結好了

總結

里提到的所有問題都是我在前端開發工作中遇到的最常見的問題,希望能對你們有些幫助。

責任編輯:張燕妮 來源: 今日頭條
相關推薦

2020-06-11 08:24:33

CSS瀏覽器macOS

2010-08-26 14:00:28

CSSmargin

2017-08-03 09:37:35

SparkStreamKafkaDirect

2010-09-02 15:18:42

CSSASP.NET

2010-08-31 16:09:04

DIV+CSS

2010-08-23 09:53:41

DivCSSweb

2018-10-24 19:59:45

Kubernetes混合云云擴展

2010-09-07 13:24:18

CSS

2010-08-26 12:59:29

marginCSS

2010-09-07 09:08:03

DIV彈出層

2021-08-31 07:57:21

輪詢鎖多線編程Java

2010-06-12 12:46:04

Grub Rescue

2016-09-27 21:14:53

JavaURL

2015-05-12 16:31:22

Elasticsear開源分布式搜索引擎

2010-09-01 14:51:12

CSSIEFirefox

2019-10-08 16:05:19

Redis數據庫系統

2009-08-03 18:06:28

JS性能問題

2022-04-07 07:31:30

CSSCSS Reset前端

2015-12-02 15:35:08

Redis Clust遷移解決方案

2024-07-08 08:45:41

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 玖玖玖在线观看 | 国产精品人人做人人爽 | 亚洲一区二区三区在线播放 | 日韩欧美黄色 | 特黄特色大片免费视频观看 | 97色伦网 | 成人毛片网站 | 丁香久久| 国产真实乱全部视频 | 久久国内精品 | 色橹橹欧美在线观看视频高清 | 蜜桃av一区二区三区 | 日韩欧美在线一区二区 | 久久一区二区免费视频 | 国产欧美日韩精品一区 | 精品美女久久久久久免费 | 日韩av在线中文字幕 | 国产欧美精品一区二区色综合朱莉 | 欧美精品一区三区 | www精品 | 国产人成精品一区二区三 | 亚洲国产一区二区在线 | 国产精品成av人在线视午夜片 | 中文字幕在线精品 | 91精品国产91久久久久久不卞 | 国产999精品久久久久久 | 国产精品色 | 澳门永久av免费网站 | 日韩精品a在线观看图片 | 国产成人综合一区二区三区 | 亚洲成人一区 | 国产精品国产三级国产aⅴ中文 | 亚洲精品一区二区三区 | 免费黄色录像视频 | 岛国av在线免费观看 | 一区二区三区四区在线免费观看 | 国产成人精品a视频一区www | 亚洲欧洲成人av每日更新 | 91视频一88av | 黄色网址在线免费观看 | 免费一区 |