user-select
user-select 屬性可以用來控制用戶是否能夠選擇文本。
<div>
<p>You can't select this text.</p>
</div>
<p>You can select this text.</p>
css:
div {
width: max-content;
height: 40px;
border: 3px solid purple;
user-select: none;
}
解析:user-select 屬性用于控制用戶是否能夠選擇文本。通過設置 user-select 屬性,可以限制用戶對文本的選擇行為或禁止選擇。該屬性可以應用于任何 html 元素,并接受以下值:
- auto:默認值,表示用戶可以選擇文本。
- none:禁止用戶選擇文本。
- text:允許用戶選擇文本,但不能選擇元素的其他部分,如背景、邊框等。
- all:允許用戶選擇元素內的所有內容,包括文本、背景和邊框。
user-select 屬性的應用場景通常涉及到用戶交互和用戶體驗的控制,可以在以下情況下使用該屬性:
- 防止文本被選中:在某些情況下,你可能希望防止用戶選擇特定區域或元素內的文本,例如,防止用戶選擇輸入框中的內容或防止復制敏感信息。通過將 user-select 設置為 none,可以禁止用戶選擇這些文本,從而保護數據的安全性。
- 控制文本選擇范圍:有時你可能只希望用戶能夠選擇特定的文本內容,而不包括其他元素中的樣式信息。通過將 user-select 設置為 text,可以限制用戶只能選擇文本內容,而不能選擇其他元素的樣式信息,從而提供更精確的文本選擇控制。
- 自定義選擇效果:使用 user-select 屬性,你還可以自定義文本選擇的外觀效果。通過設置適當的 CSS 樣式,如更改選中文本的背景色、前景色等,可以為用戶提供獨特的文本選擇體驗,增強頁面的可視化效果。
- 取消文本選擇:在某些特定情況下,你可能希望用戶無法選擇任何文本,以防止復制、截屏等操作。通過將 user-select 設置為 none,可以完全禁止用戶選擇文本,從而實現取消文本選擇的效果。
pointer-events
可以使用 pointer-events 屬性來控制元素對指針事件的反應。
<div>
<p class="first">
Please <a href="https://shefali.dev/blog">Click here</a>
</p>
<p class="second">
Please <a href="https://shefali.dev/blog">Click here</a>
</p>
</div>
CSS:
.first {
pointer-events: none;
}
.second {
pointer-events: auto;
}
解析:pointer-events 屬性用于控制元素對指針事件的反應。該屬性允許指定一個值來控制元素是否響應鼠標事件、觸摸事件或筆事件。它有以下值:
- auto:元素按照默認方式響應指針事件。
- none:元素不響應指針事件,事件將向下傳遞到下一層元素。
- visiblePAInted:元素響應指針事件,但只有在元素的背景顏色或圖片已經被繪制時才會響應。
- visibleFill:元素響應指針事件,但只有在元素的填充區域內部時才會響應,對于描邊無效。
- visibleStroke:元素響應指針事件,但只有在元素的描邊區域內部時才會響應,對于填充無效。
- visible:元素響應指針事件,只要它可見且鼠標事件發生在元素的邊框框線上或內部。
pointer-events 屬性的應用場景如下:.
- 禁用用戶交互:通過將元素的 pointer-events 設置為 none,可以阻止用戶與該元素進行任何交互操作,如點擊、滾動等。這在需要禁用某個元素的交互能力時非常有用。
- 創建自定義的點擊區域:有時候,可能希望一個元素在視覺上占據更大的空間,但只對特定區域響應點擊事件。通過將 pointer-events 設置為 none,然后在需要響應點擊的子元素上重新設置為 auto,可以創建自定義的點擊區域。
- 優化元素疊加情況下的交互:當多個元素重疊在一起時,可能會出現交互沖突。通過設置不同元素的 pointer-events 屬性,可以控制哪個元素應該優先響應指針事件,以解決疊加元素之間的交互問題。
- 實現鼠標樣式變化:通過設置 pointer-events 屬性,可以根據特定的交互狀態來改變鼠標樣式。例如,在元素被禁用或不可點擊時,將 pointer-events 設置為 none,并將鼠標樣式修改為指示不可點擊的樣式。
accent-color
當涉及到復選框和單選按鈕等輸入時,瀏覽器通常會引入默認顏色,該顏色可能與 UI 配色方案不太協調。
為了保持 UI 的一致性,可以使用accent-color 屬性更改輸入的默認顏色。
<form>
<input type="radio" id="html" />
<label for="html">HTML</label>
<input type="radio" id="css" />
<label for="css">CSS</label>
<input type="radio" id="js" />
<label for="js">JAVAScript</label>
</form>
CSS:
input {
accent-color: green;
}
效果如下:
解析:accent-color 屬性用于指定元素的強調色。它可以應用于很多元素,例如按鈕、鏈接、輸入框、選擇框等等,以突出顯示它們在頁面中的作用。使用該屬性可以使你的網頁在不同的主題和模式下保持一致的強調色,從而提高網頁的可訪問性和用戶體驗。
backdrop-filter
有時候你可能想要對一個元素后面的區域應用濾鏡效果(模糊效果),可以使用 backdrop-filter 屬性。
<div class="container">
<div class="box">
<p>This is an example of backdrop-filter property.</p>
</div>
</div>
CSS:
.container {
display: flex;
align-items: center;
justify-content: center;
height: 350px;
width: 350px;
background: url(img.webp) no-repeat center;
}
.box {
padding: 10px;
font-weight: bold;
color: white;
background-color: transparent;
backdrop-filter: blur(10px);
}
效果如下:
解析:backdrop-filter 屬性用于在元素背景的后面應用濾鏡效果。它可以讓你創建出模糊、色彩變化或其他視覺效果來改變元素背景區域的外觀。通過使用該屬性,可以為元素的背景添加一層視覺效果,使背景與頁面的其余內容產生視覺上的分離和層次感。這個屬性通常與背景圖像或顏色一起使用,以提供一種更加豐富和吸引人的設計效果。
caret-color
當使用 input 或 textarea 元素時,可以使用 caret-color 屬性來更改這些元素的文本光標顏色,以匹配網頁的配色方案。
<input type="text" placeholder="Your Name" />
CSS:
input {
caret-color: red;
}
解析:caret-color 屬性用于指定文本光標的顏色。文本光標是指在輸入框或文本區域中表示當前輸入位置的閃爍符號,該屬性可以接受各種顏色值,例如十六進制顏色、RGB 值、顏色名稱等。它可以應用于任何支持文本輸入和編輯的元素,如 input、textarea 等。
image-rendering
可以使用 image-rendering 屬性來控制縮放圖像的渲染方式并優化質量。不過,該屬性不會影響未經縮放的圖像。
img {
image-rendering: pixelated;
}
解析:image-rendering 屬性用于控制圖像在瀏覽器中的渲染方式。它可以影響圖像在縮放、旋轉或變形等操作時的呈現質量。它提供了不同的值,可以讓你選擇最適合你需求的圖像渲染方式。以下是一些常見的屬性值:
- auto:瀏覽器默認的圖像渲染方式。
- crisp-edges:通過強調圖像邊緣來實現清晰的渲染效果,適用于像素風格的圖像。
- pixelated:通過像素化的方式來渲染圖像,適用于放大圖像時保持像素風格的效果。
以下是 image-rendering 屬性的一些常見應用場景:
- 改善小圖片的清晰度:對于小圖片,如果直接展示可能會出現鋸齒或者模糊的問題。通過將 image-rendering 設置為 pixelated,可以讓瀏覽器在縮放圖片時使用像素化的方式,從而獲得更加清晰的效果。這在需要展示小圖標、小徽標等場景下非常有用。
- 提高大圖片的加載速度:對于大圖片,如果直接展示會導致頁面加載速度變慢,影響用戶體驗。通過將 image-rendering 設置為 crisp-edges,可以讓瀏覽器在縮放圖片時只顯示原始邊緣,從而加快圖片加載速度。
- 在高分辨率設備上顯示高清圖像:對于高分辨率設備,如果直接展示低分辨率的圖片,可能會出現模糊或者失真的問題。通過將 image-rendering 設置為 auto 或者 high-quality,可以讓瀏覽器在高分辨率設備上顯示高清的圖像,提高用戶體驗。
- 優化動畫效果的展示:當圖像用于動畫場景時,通過將 image-rendering 設置為 optimizeQuality 或者 optimizeSpeed,可以根據需要平衡圖像質量和展示速度,從而優化動畫效果的展示。
mix-blend-mode
如果想要設置一個元素內容與其背景的混合效果,可以使用 mix-blend-mode
屬性。
<div>
<img src="cat.jpg" alt="cat" />
</div>
div {
width: 600px;
height: 400px;
background-color: rgb(255, 187, 0);
}
img {
width: 300px;
height: 300px;
mix-blend-mode: luminosity;
}
效果如下:
解析:mix-blend-mode 屬性用于控制元素內容與其背景之間的混合模式。通過設置 mix-blend-mode 可以改變元素在視覺上與其周圍元素的交互方式。這個屬性可以應用于任何具有背景的元素,包括文本、圖像和其他 HTML 元素。使用 該屬性可以創造出各種獨特的視覺效果,如顏色疊加、透明度混合、文字特效等。
常用的 mix-blend-mode 值包括:
- normal:默認值,沒有混合效果。
- multiply:將元素的顏色與背景進行相乘。
- screen:將元素的顏色與背景進行屏幕模式混合。
- overlay:根據元素和背景的亮度進行混合。
- darken:選擇較暗的顏色作為最終混合結果。
- lighten:選擇較亮的顏色作為最終混合結果。
- color-dodge:通過減少對比度來混合顏色。
- color-burn:通過增加對比度來混合顏色。
- difference:計算顏色之間的差異。
- exclusion:排除兩種顏色的共同部分。
- hue:保留元素的色調,應用背景的飽和度和亮度。
- saturation:保留元素的飽和度,應用背景的色調和亮度。
- color:保留元素的色調和飽和度,應用背景的亮度。
- luminosity:保留元素的亮度,應用背景的色調和飽和度。
object-fit
可以使用 object-fit 屬性來設置圖像或視頻的大小調整行為,使其適應其容器。
<div>
<img src="cat.jpg" alt="cat" />
</div>
CSS:
div {
width: 500px;
height: 400px;
border: 3px solid purple;
}
img {
width: 500px;
height: 300px;
object-fit: cover;
}
效果如下:
解析:object-fit 屬性用于控制替換元素(如 <img>、<video> 或 <iframe>)在其容器中的尺寸調整行為。通過設置 object-fit 屬性,可以更好地控制替換元素在容器中的尺寸調整行為,確保它們能夠正確地適應容器并保持比例。
當替換元素的尺寸與其容器不匹配時,瀏覽器默認會根據一定規則調整元素的大小和比例。然而,這可能導致圖像或視頻失真,或者在容器中無法正確顯示。object-fit 屬性可以解決這個問題,它有以下幾個取值:
- fill:默認值,元素會被拉伸以填充容器,可能導致元素的寬高比發生變化,從而導致元素變形。
- contain:元素會等比例縮放,保持其原始寬高比,并使其適應容器,不會超出容器邊界,并且會在容器內居中顯示。
- cover:元素會等比例縮放,保持其原始寬高比,并將其放大到填充容器,可能會超出容器邊界,但不會變形,并且會在容器內居中顯示。
- none:元素會保持其原始大小,不會進行任何尺寸調整。
- scale-down:元素會根據容器的大小來確定是按原始大小顯示還是進行縮小。
object-position
object-position 屬性與 object-fit 屬性一起使用,用于指定圖像或視頻在其內容框內的 x/y 坐標上的位置。
<div>
<img src="cat.jpg" alt="cat" />
</div>
CSS:
div {
width: 500px;
height: 400px;
border: 3px solid purple;
}
img {
width: 500px;
height: 300px;
object-fit: cover;
object-position: bottom right;
}
效果如下:
這里設置了 object-position: bottom right; 這意味著在調整圖像大小時,它將顯示圖像的右下角部分。
解析:object-position 屬性用于指定替換元素(如 <img>、<video> 或 <iframe>)在其容器中的位置。它可以與 object-fit 屬性一起使用,以控制替換元素的大小和位置。
當使用 object-fit 屬性調整替換元素的大小時,可能會在容器中留下空白區域。object-position 屬性允許我們根據需要將替換元素在容器內進行精確定位,以填充空白區域。
object-position 屬性接受兩個值:
- 水平定位:使用關鍵字 left、center 或 right,或者使用百分比或長度值來指定水平方向上的位置。
- 垂直定位:使用關鍵字 top、center 或 bottom,或者使用百分比或長度值來指定垂直方向上的位置。
outline-offset
可以使用 outline-offset 屬性來指定描邊與元素邊框之間的間距。
<div></div>
div {
width: 300px;
height: 300px;
border: 3px solid purple;
outline: 3px solid rgb(81, 131, 148);
outline-offset: 10px;
}
效果如下:
解析:outline-offset 屬性用于指定描邊(outline)與元素邊框之間的間距。它可以用來調整描邊的位置和外觀。默認情況下,描邊與元素的邊框緊密相鄰,且沒有間距。但是,通過使用 outline-offset 屬性,可以在描邊和邊框之間創建一個間距,該屬性接受長度值或百分比值。正值會將描邊向外擴展,負值會將描邊向內收縮。
scroll-behavior
可以使用 scroll-behavior 屬性來實現平滑滾動,而無需使用任何 JavaScript,只需要一行 CSS 代碼。
html {
scroll-behavior: smooth;
}
解析:scroll-behavior 屬性用于控制頁面滾動的行為。通過設置該屬性的值,可以讓頁面在滾動時呈現出不同的效果,該屬性支持兩個值:
- auto:默認值,表示使用瀏覽器默認的滾動行為,即瞬間跳轉到目標位置。
- smooth:啟用平滑滾動效果,當用戶通過鏈接或編程方式觸發頁面內的錨點跳轉或滾動行為時,頁面將會平滑滾動到目標位置。
啟用平滑滾動效果可以提升用戶體驗,使頁面滾動更加流暢自然。此外,平滑滾動還有助于減少眼睛視覺的跳躍感和頭暈感,并且能夠更好地吸引用戶的注意力。
text-justify
當將 text-align 屬性的值設置為 justify 時,可以使用 text-justify 屬性來設置文本的對齊方式。
p {
text-align: justify;
text-justify: inter-character;
}
解析:text-justify 屬性用于設置文本的對齊方式,當 text-align 屬性的值設置為 justify 時生效。通過設置 text-justify 屬性,可以控制文本在行內的分布方式,以填充行內的空白空間,從而實現文本的自動調整和對齊。該屬性支持以下幾個值:
- auto:默認值,由瀏覽器根據當前文本內容和容器寬度自動選擇適合的對齊方式。
- none:取消文本的對齊方式,文本將保持左對齊或右對齊,取決于 text-align 屬性的值。
- inter-word:使文本在單詞之間進行自動調整,填充行內的空白空間。
- inter-character:使文本在字符之間進行自動調整,填充行內的空白空間。