Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
SS怎么選擇除了第一個子元素外的其余同級子元素
要通過CSS的代碼選擇某一個元素的除了第一個子元素外的其余的跟第一個子元素同級的子元素,可以結合使用CSS的:not()偽類選擇器和:nth-child()偽類選擇器進行選擇。大致的語法如下:
.parent > .child:not(:nth-child(1)) {樣式設置}
下面的實例中除了使用上述的兩種偽類選擇器之外,還結合了class屬性:
<div class='p'>
<div class='c'>p的第一個子元素</div>
<div class='c'>p的第二個子元素</div>
<div class='c'>p的第三個子元素</div>
</div>
<style>
.p > .c:not(:nth-child(1)){color:green;}
</style>
原文及在線編輯器:CSS怎么選擇除了第一個子元素外的其余同級子元素 | CSS教程
html所有的元素擁有class屬性,該屬性會對元素進行分組,標識為某一組。
js中使用className屬性來保存HTML的class的屬性值
盡管如此,js還定義了一個方法,即一個getElementsByClassName(),是基于class屬性值中的標識符來選取成組的文檔元素
還有一個類似的getElementsByTagName()的方法也是獲取一個組,返回的是一組的內容即NodeList。返回的是類數組。
一個使用getElementsByClassName()的例子
一個兼容,瀏覽器根據!doctype來進行選擇怪異模式,和標準模式的,怪異模式是為了向后兼容而存在的,標準模式不是(兼容以及不太重要了,但是還要知道一點,這是ie8的問題,但愿再過幾年直接win7也沒有了)
css樣式表可以進行選擇,這里僅僅是一些常見的css選擇器
h5定義了一些選擇api用來通過js來選擇元素
選擇title元素
會返回一個類數組的 節點列表
選擇一個偽元素,在css中匹配了節點一部分,而不是實際元素。
其中querySelector只會返回匹配的第一個結果,querySelectorAll將會返回全部結果,返回一個類數組。
返回一個頁面上未訪問的連接
選擇一個已經訪問過的,用來獲取用戶在該頁面的一部分的歷史記錄
document.all[]
已經廢棄,不在使用,所以不學習
一旦從文檔中選取了一個元素,將會需要查找文檔與之在結構上相關的部分,(即,父元素,子元素,兄弟元素)。溫帶在概念上為節點對象樹。瀏覽器定義了一個api將會對元素對象樹進行遍歷
作為節點樹的文檔
Document對象,以及Element對象和文檔中表示文本的Text對象都為Node對象,Node對象定義了一下重要的屬性。
parentNode
獲取該節點的父節點
childNode
只讀類型數組對象(NodeList對象),它是該節點的子節點的實時表示
firstChild, lastChild
該節點的子節點中的第一個和最后一個
nextSibling,previousSibling
該節點的兄弟節點中的前一個和下一個
nodeType
該節點的類型
一些類 繼承(基類,父類,超類),派生類,子類
這里以c++為栗子 :基類,父類,超類,指被繼承的類,派生類,子類指繼承于基類的類,在C++中冒號表示繼承,入classA:public:B 表示派生類A從基類B繼承而來。派生類包含基類的所有成員,還包括自身的特有成員,由于繼承關系的存在,派生類和派生類對象訪問基類中的成員就像訪問自己的成員一樣。可以直接使用,但是派生類,仍舊無法訪問基類中的私有成員。C++派生類可以同時從多個基類繼承,java不允許多重繼承,當繼承多個基類的時候,使用,運算符將基類進行分開。
Element
Element是一個通用的基類,所有的Document都繼承自Element
例如
屬于一個由Element基類繼承的Document的一個節點
text節點
文字內容,即匿名文字所成的節點。
Comment節點
屬于注釋的節點
Document 節點
一個已經加載好的網頁,并通過入口來操作網頁的內容
DocumentType節點
一個聲明節點
DocumentFragment 節點
表示一個沒有父級文件的最小文檔對象。它被當做一個輕量版的 Document 使用
nodeValue
text節點或者Comment節點文本內容
nodeName
元素的標簽名,以大寫輸出
一個栗子
控制臺輸入
返回
表示
該html
繼續重新加載,重新輸入
繼續去掉唯一的換行符
繼續在控制臺輸入
返回body
說明是換行符的問題導致
https://stackoverflow.com/questions/45614337/what-causes-childnodes-to-return-text-instead-of-div
https://stackoverflow.com/questions/21357004/what-are-html-dom-text-elements
將文檔看成Element對象樹,忽視部分文檔,text和comment文檔(回車,空格,以及注釋節點)
Element的children屬性
第一部分是Element(通用基類)的children屬性,類似于childNodes屬于一個NodeList對象,不同的是children列表只包含Element對象,text和Comment節點沒有children屬性,任何的Element的parentNode(父節點)都是另一個Element,或者是樹根的Document節點
Element的屬性
firstElementChild,lastElementChild
類似firstChild和lastChild,只代表子Element
nextElementSibling,previousElementSibling
類似的nextSibling和previousSibling 代表兄弟節點
childElementCount
子元素的數量,和children。length的值相等
頁面布局常遇見需要子元素完全居中顯示,因此在此總結常見方案。
讓黃色塊在父容器(灰色塊)中水平、垂直居中
黃色方塊:寬高100px
灰色方塊:寬高400px
下列方法1到方法7,變換前后的圖像都是上面2張圖(圖標注了長度)
默認代碼:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>完全居中</title>
<style>
.parent {
width: 400px;
height: 400px;
background-color: gray;
}
.children {
width: 100px;
height: 100px;
background-color: yellow;
}
</style>
</head>
<body>
<div class="parent">
<div class="children"></div>
</div>
</body>
</html>
下列方法1到方法7,里css代碼都是基于上方默認代碼
.parent {
/* 彈性布局 */
display: flex;
/* 主軸對齊方式:居中 */
justify-content: center;
/* 側軸對齊方式(單行):居中 */
align-items: center;
}
.parent {
/* 彈性布局 */
display: flex;
}
.children {
margin: auto;
}
.parent {
position: relative;
}
.children {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;
}
分析過程:使用外邊距推中間黃色盒子,距離頂端(400-100)/2= 150 px
.parent {
/* 因為margin塌陷問題(子容器的外邊距會被父容器用掉):此處需要顯示指明父容器溢出方式 */
overflow: auto;
}
.children {
/* 上下150px,左右自動 */
margin: 150px auto;
}
這種方法使用CSS的transform和position屬性。這種方法在某些情況下可能比Flexbox或Grid更簡單:
.children {
position: relative;
left: 50%;
top: 50%;
/*
transform:2/3D變換關鍵字
translate是2D位移關鍵字
x與y都-50%,是因為坐標原點默認是左上角,在left與top移動50%后,黃色盒子處于中心點右下方,因此需要讓黃色盒子xy都減去一半
*/
transform: translate(-50%, -50%);
}
CSS Grid也是一個強大的布局工具,它也可以用來實現子元素的水平和垂直居中。以下是一個例子:
.parent {
display: grid;
justify-items: center;/* 水平居中 */
align-items: center;/* 垂直居中 */
}
通過display設置為table-cell,然后使用text-align 、vertical-align實現水平居中和垂直居中。
.parent {
display: table-cell;
text-align: center;
vertical-align: middle;
}
.children {
display: inline-block;
}
若父元素寬高確定,子元素寬高不確定,用
將children設為行內元素,運用text-align即可實現水平居中,再借助vertical-align在垂直方向上達到居中效果。最后,將children的行高設定為默認值(line-height具有可繼承性,需單獨調整子元素的行高)。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>完全居中</title>
<style>
.parent {
width: 400px;
height: 400px;
background-color: gray;
text-align: center;
line-height: 400px;
}
.children {
background-color: yellow;
display: inline-block;
vertical-align: middle;
line-height: initial;
}
</style>
</head>
<body>
<div class="parent">
<div class="children">child</div>
</div>
</body>
</html>
初始
居中
更多精彩,請關注微信公眾號:碼圈小橙子
*請認真填寫需求信息,我們會在24小時內與您取得聯系。