阿莫斯の兔偶斯
可以裝Wox, Afred和Divvy
CSS 屬性選取器 - 一個選取自由度超高的選取器
屬性選取器的七種選取方式
10:35 好用工具介紹
10:44 正課開始(圖片標籤)
11:23 CSS解釋
11:43 相對路徑與絕對路徑
11:53 css style
12:18 選取器
13:34 優先權
13:35 屬性和class的優先權一樣
13:37 後代選取器
14:17 練習demo (十分鐘內寫完!)
16:15 另外兩種優先權
16:24 Flex
<img src="圖片的路徑">
獨立標籤
xml –> html = xhtml
<br>
強迫換行,也是獨立標籤
沒有標記換行就不會換行
<img src=" "/>
, <br/>
後面加了斜線是xml
的規則
<img src="圖片的位置 or 圖片的路徑 or 路徑">
<img src="C/user/桌面/絕對路徑.jpg"> #斜線就是進去的意思
<img src="相對路徑.jpg"> # ←圖片要在同一個資料夾
<img src="../相對路徑.jpg"> #"../"跳出去的意思,當圖片在不同資料夾時使用
# "../資料夾/圖片.jpg"跳出資料夾,再進去另一個資料夾
網頁如何渲染不同年代的標準?
HTML 4.0
XHTML 1.0
HTML 5.0
<!DOCTYPE>
不是標籤!!
用來告訴瀏覽器是用哪個版本(DTD
文件類型宣告)
階層式樣式表:幫HTML或XML處理樣式
的電腦語言
標準
css1.0
css2.1 (W3C的推薦標準)
---
草案
css3.0
css4
inline-style:
注意:只有在用程式動態地
去改變外觀(如javascript
)才適合這樣做
好處是前端渲染速度快
但是伺服器很累(所以不要這樣寫!)
[翻譯]
<p style="文字色彩:紅色; 背景色彩:灰色">
---------------------------------
<p style="color: red; background-color: grey">
css style:
[翻譯]
<style>
段落 {
色彩: 紅色;
背景色彩: 灰色;
}
---------------------------------
p {
color: red;
background-color: grey;
}
</style>
css通常放在<head>
裡面
因為瀏覽器會先讀HTML的結構 (DOM
文件物件模型)
然後再讀JavaScript
.
class
[翻譯]
. 前言 {
色彩: 紅色;
背景色彩: 灰色;
}
<p class="前言">
---
. info {
color: red;
background-color: grey;
}
<p class="info">
#
#id名稱{}
id
最多只能出現一次id
不一定要給;給id
通常是為了程式上的需求判斷重點明確性越高,優先權越高
!important > inline style > ID選取器 > Class選取器 > Tag (Element) > * > 繼承
<p class="info" id="first" style="color: green;">
注意:
!important
是髒東西!不要隨便亂用
p {
color: purple !important;
background-color: grey;
}
.
把條件串在一起h1.info {
# h1標籤和class選取器
}
h2.info {
}
p.info {
}
[alt]
屬性css
[alt="圖片"]{
border: 4px solid yellow;
}
html
<img class="" alt="圖片" src="https://fakeimg.pl/150x110/?retina=1&text=你好&font=noto">
case 1:
img.pic[alt]{
# 三個選取器,優先權較高
}
img[alt="amos"]{
# 只有兩個選取器而已
}
case 2:
img.pic[alt="Amos"]{
# 三個選取器
}
img.pic[alt]{
# 也是三個選取器,放後者優先權較高
}
case 3: 屬性和class的優先權一樣
img.pic{
}
img[alt]{
}
藉由父層去控制子層
以下範例,所有子層的div
都會被選到
css
.box div{
color: red;
}
html
<div class="box">
<div>
aaa
<div>
bbb
</div>
</div>
</div>
>
指定後代的層級div > div
的話,兩層會有效果
div > div > div
的話,三層會有效果
以邊框線
和背景色
為例子:
(記得先預設背景色,不然會被蓋過)
css
div{
padding: 30px;
border: 10px solid gray;
background-color: #fff;
/* 沒有設定背景色的情況下,是透明的 */
/* 要先設定為白色再做測試 */
}
.papa > div > div > div {
background-color: #ccc;
}
html
<div class="papa">
<div class="child1">
aaa
<div class="child1-1">
bbb
<div class="child1-1-1">
ccc
<!-- ccc這行背景色會改變為灰色 -->
</div>
</div>
</div>
</div>
有些屬性會被繼承,必要性在哪?
文字
有關 (多數文字是相同的外觀設計)行高
也會被繼承(所以不用一行一行去設定)邊框線的色彩被繼承,方不方便?
=> 以設計上來說,不太好看(所以不需要繼承)
重點
class
處理未來的需求變更 div*2>h2{news}+ul>li*5>a[#]{lorem}
css
以下可以做精簡:
.news{
padding: 30px;
border: 3px solid #aaa;
margin-bottom: 50px;
}
.event{
padding: 30px;
border: 3px solid #aaa;
margin-bottom: 50px;
}
精簡後
.news, .event{
padding: 30px;
border: 3px solid #aaa;
margin-bottom: 50px;
}
.news,
.event{
padding: 30px;
border: 3px solid #aaa;
margin-bottom: 50px;
}
#差異化的部分是邊框顏色
.news{
border-color: darkblue;
}
.event{
border-color: darkgoldenrod;
}
小技巧:
border: 3px solid #aaa;
等於
border-style: solid;
border-weight: 3px;
名稱可以設定相同部分+不同部分
<div class="list news">
News
</div>
<div class="list event">
Event
</div>
如此一來就可以再少一行程式碼
.list h2{
font-size: 18px;
border: 1px solid #ccc;
}
重點:針對需求去調整實作方式!沒有標準答案
*
*
會選到所有東西
css
* {
color: red;
}
.box1{
color: gray;
#只會選到box1, 不會選到<p>
}
html
這行會讓字變成紅色,不會變成灰色 (因為沒選到<p>
)
<div class="box1">
<p>Lorem ipsum dolor, sit amet consectetur adipisicing elit.</p>
</div>
要讓字也變成灰色的設定
.box1 p {
color: gray;
}
如果把下面註解掉,就變成繼承。p
會繼承.box1
裡的設定
# * {
# color: red;
#}
.box1{
color: gray;
#只會選到box1, 不會選到<p>
}
例如:
* {
margin: 0;
padding: 0;
list-style: none;
}
產生一份給vscode的設定檔
"*": {
"prefix": "*",
"body": [
"* {",
" margin: 0;",
" padding: 0;",
" list-style: none;",
"}"
],
"description": "萬用選取器 reset"
}
command
+ shift
+ p
輸入關鍵字snippet
,打開preference
:設定css.json
把剛剛產生的Snippet檔貼入即可!
讓圖片做橫排
特性: 版面不會因為width超過原本設定的數值而爆掉
css
<style type="text/css">
.card-group{
display: flex;
width: 600px;
border:2px solid red;
}
.card{
width: 180px; #這邊就算設了10000px也不會爆掉!
margin: 10px;
}
.card img{
width: 100%;
}
</style>
html
<div class="card-group">
<div class="card">
<img src="https://picsum.photos/300/200?random=1" alt="圖片說明">
<h3>title</h3>
<p>Lorem</p>
</div>
<div class="card">
<img src="https://picsum.photos/300/200?random=1" alt="圖片說明">
<h3>title</h3>
<p>Lorem</p>
</div>
<div class="card">
<img src="https://picsum.photos/300/200?random=1" alt="圖片說明">
<h3>title</h3>
<p>Lorem</p>
</div>
</div>
reset, inline, box
這個勾勾打開,才能用tab鍵補完!