CSSStyleSheet.media 屬性

admin發表於2018-09-25

由於媒體的多樣性,導致很多CSS樣式需要特定針對於某一種媒介。

比如CSS專門用於列印效果或者顯示器螢幕效果,再或者專門用於放映機。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼
<style type="text/css" media="print">
div{
  font-size:12px;
}
</style>

上述程式碼通過media="print"設定CSS程式碼在列印時有效。

media預設值是screen,所以如果CSS程式碼針對顯示器螢幕效果,可以省略。

CSSStyleSheet.media屬性的作用就是返回當前樣式表所作用的媒介。

屬性的返回值是MediaList物件。

語法結構: 

[JavaScript] 純文字檢視 複製程式碼
let MediaList=CSSStyleSheet.media

瀏覽器支援:

(1).IE瀏覽器支援此屬性。

(2).edge瀏覽器支援此屬性。

(3).谷歌瀏覽器支援此屬性。

(4).火狐瀏覽器支援此屬性。

(5).opera瀏覽器支援此屬性。

(6).safria瀏覽器支援此屬性。

程式碼例項:

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style media="screen,projection">
#ant {
  width:100px;
  height:100px;
  text-align:center;
  background-color: red;
}
</style>
<script>
window.onload = function () {
  let odiv = document.getElementById("ant");
  let styleSheet = document.styleSheets[0]
  console.log(styleSheet.media);
  console.log(styleSheet.media.mediaText);
}
</script>
</head>
<body>
<div id="ant"></div>
</body>
</html>

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/25/122144hq558sqd00yps58z.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

程式碼分析如下:

(1).document.styleSheets獲取當前頁面所有的樣式表物件,返回值是一個物件集合。

(2).由於頁面只有一個內部樣式表,通過document.styleSheets[0]即可獲取。

(3).styleSheet.media屬性可以獲取樣式表作用的媒介型別,返回值是一個集合物件,儲存了樣式表設定的媒介型別,程式碼中內部樣式表設定了兩種媒介型別"screen,projection"。

(4).styleSheet.media.mediaText屬性可以返回設定媒介型別的字串形式。

關於樣式表物件可以參閱CSSStyleSheet 物件詳解一章節。

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<link rel="stylesheet" href="css/style.css"/>
<style media="screen,projection">
#ant {
  width:100px;
  height:100px;
  text-align:center;
  background-color: red;
}
</style>
<script>
window.onload = function () {
  let odiv = document.getElementById("ant");
  let styleSheet = document.styleSheets[0]
  console.log(styleSheet.media);
  console.log(styleSheet.media.mediaText);
  
}
</script>
</head>
<body>
<div id="ant"></div>
</body>
</html>

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/25/122217ht5m5d5fm177i9tt.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

引入的外部樣式表並沒有顯示定義media屬性,所以styleSheet.media返回的集合物件長度為0。

沒有顯示定義,那麼media屬性的預設值為"screen",也就是作用域顯示器螢幕。

特別說明:不要誤以為只有電腦的顯示器才是螢幕,手機或者ipad等螢幕都是顯示器螢幕,只是尺寸不同而已。