首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

HTML/CSS background:url(0) 導致背景色消失?屬性語法與渲染機制解析

     編輯:程式設計綜合問答

在 inline style 中寫 style="background:url(0); border-width:0" 會導致輸入框背景變透明(無背景色),原因在於 background 簡寫屬性會重置所有背景相關子屬性,包含 background-color。

背景屬性機制

background 是簡寫屬性,包含:

  • background-color
  • background-image (url())
  • background-repeat
  • background-position
  • background-attachment
  • background-size
  • background-origin
  • background-clip

當設定 background: url(0) 時,瀏覽器解析為:
background-image: url(0); background-color: transparent; background-repeat: repeat; ...
未指定的子屬性會重置為初始值,因此 background-color 變為 transparent(透明)。

url(0) 代表什麼?

url(0) 會被視為相對路徑指向名為 "0" 的檔案,大多數情況下會發生 404 錯誤,等同於無背景圖片。這不是「無背景」的特殊語法。

正確做法

需求正確寫法
僅設定背景圖片,保留原背景色background-image: url(0); 或 background: url(0) no-repeat center / cover;(不重置 color)
移除背景圖片,保留背景色background-image: none;
同時設定圖片與顏色background: #fff url(bg.png) no-repeat center;
輸入框無背景、無邊框background: transparent; border: none;

參考規格

MDN CSS background 完整規格:簡寫屬性會重置未指定的子屬性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved