zoukankan      html  css  js  c++  java
  • 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 {
    	 100%;
    	flex-direction: row;
    	flex-wrap: wrap;
    	display: flex;
    }
    p {
    	margin-right: 10px;
    	padding-bottom: calc((100% - 10px * 2) / 6);
    	border: 1px solid red;
    	 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 {
    	 33%;
    	border: 1px solid red;
    	padding-bottom: 33%;
    }

      

  • 相关阅读:
    进程间通信 之 管道
    单调递增连续最长子序列
    使用EasyUI实现加入和删除功能
    android file.createnewfile ioexception
    60个可爱的云图案设计,激发你的灵感
    关于Platinum库的MediaRender具体C++代码实现探讨
    《程序员的第一年》---------- 学会抛出异常 你的程序人生才幸福
    LA 3027 Corporative Network 并查集记录点到根的距离
    Struts2 学习第一步准备工作
    Android编程心得-图片自适应心得
  • 原文地址:https://www.cnblogs.com/longlongdan/p/14312075.html
Copyright © 2011-2022 走看看