flex實現多列布局效果&對角線布局


  題目:用 css 實現如下的多列布局效果:父元素寬度自適應,子元素數量隨機可變的(假如 8 個),每一行有 3 個子元素,子元素之間的水平間距為 10px ,子元素的寬度自適應父元 素的寬度((父元素寬度 - 10px * 2) / 3),子元素的高度與本身的寬度成正比(比如 2:1 )

效果如下:

 

 

 

涉及到的知識點:

1.flex布局相關

2.calc計算屬性,(運算符號兩遍要有空格)calc((100% - 10px * 2) / 6)

3. padding和margin的百分比相對的是父元素的寬度

4. :nth-child(3n):不要帶運算符號*

  html結構如下:div里面有8個p標簽

<body>
	<div>
		<p></p>
		<p></p>
		<p></p>
		<p></p>
		<p></p>
		<p></p>
		<p></p>
		<p></p>
	</div>
</body>

  css如下: 

div {
	width: 100%;
	flex-direction: row;
	flex-wrap: wrap;
	display: flex;
}
p {
	margin-right: 10px;
	padding-bottom: calc((100% - 10px * 2) / 6);
	border: 1px solid red;
	width: calc((100% - 10px * 2) / 3);
	margin-bottom: 10px;
}
p:nth-child(3n) {
	margin-right: 0px;
}

  步驟一:使用flex布局,換行

  步驟二:cacl計算出元素的寬度

  步驟三:由於最后一行需要左對齊所以最好使用margin-right來控制間距,而不是用justify-content: space-between;

  步驟四:使用nth-child讓每行最后一個元素margin-right為0 才不會換到下一行

題目:實現一個對角線布局

  效果如下

 

html:

<body>
	<div><p></p></div>
	<div><p></p></div>
	<div><p></p></div>
</body>

 css:關鍵點就一個justify-content不同的對齊方式

div {
	display: flex;
}
div:nth-child(1) {
	justify-content: flex-start;
}
div:nth-child(2) {
	justify-content: center;
}
div:nth-child(3) {
	justify-content: flex-end;
}
p {
	width: 33%;
	border: 1px solid red;
	padding-bottom: 33%;
}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM