css乱炖-------布局(flex实现)

最近看了一篇文章,布局的概念讲的还是很清楚,但是里面使用的布局方式让我眼前一亮,同样是实现两栏和三栏的布局,他使用的技术就是普通的float和position定位,用了挺少的代码就实现了学了很久的布局。这个是连接 CSS布局说——可能是最全的


position的一些属性

上篇文章没讲清楚几个点,就是position的几个属性。

  • relative
  • absolute

absolute

生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。
元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

如果一个元素,它的position值是absolute的话,它在计算定位点的时候,首先会去向上找它的父级元素,直到找到父级元素的position值不是static的,从这个元素的区域内开始计算定位点。如果没有找到。那就去body为计算点。

relative

生成相对定位的元素,相对于其正常位置进行定位。

所谓的正常元素,就是它的父级。。。。。它和absolute的区别就是,它就直接找它的父级定位。

relative

生成绝对定位的元素,相对于浏览器窗口进行定位。
元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

这个尼玛就相对于视窗,就是浏览器的窗口进行定位了。。。。很gay。它就算被包在relative的div中,超出这个区域也会显示,就相当于和它所有的父级都没什么关系了,只受浏览器的窗口控制。

sticky

这个是css3新增的属性,他就是relative和fixed的结合体, 它有fixed的特性,但是他可以被限定在父级元素的区域框内。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
       
    </style>
</head>
<body>
        <div style="position: relative; height: 500px; width: 500px; background-color:antiquewhite; margin-bottom: 500px">
            <div style="position: sticky; height: 50px; width: 50px;background-color:red; top: 20px" ></div>
        </div>
    
</body>
</html>

用flex实现布局

虽然说链接里的文章用的布局方式可以说是很简单了,但是因为有移动端的存在,这样的布局就不太适用了,而flex布局就很适合移动端,所以,我们如果一开始就使用flex的布局不就好了?

两栏布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>两栏布局</title>
    <style>
        .cointainer {
            display: flex;
            flex-direction: row;
            justify-content: space-between;
        }
        .leftLayout {
            width: 200px;
            height: 600px;
            background: red;
            text-align: center;
            line-height: 600px;
            color: #fff;
        }
        .content {
            width:100%;
            height: 600px;
            background: yellow;
            text-align: center;
            line-height: 600px;

        }
       
    </style>
</head>
<body>
    <div class="cointainer">
        <div class="leftLayout">侧边栏</div>
        <div class="content">内容</div>
    </div>

</body>
</html>

三栏布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>两栏布局</title>
    <style>
        .cointainer {
            display: flex;
            flex-direction: row;
            justify-content: space-between;
        }
        .leftLayout {
            width: 200px;
            height: 600px;
            background: red;
            text-align: center;
            line-height: 600px;
            color: #fff;
        }
        .content {
            width:80%;
            height: 600px;
            background: yellow;
            text-align: center;
            line-height: 600px;

        }
        .asideLayout {
            width:20%;
            height: 600px;
            background:green;
            text-align: center;
            line-height: 600px;


        } 
       
    </style>
</head>
<body>
    <div class="cointainer">
        <div class="leftLayout">侧边栏</div>
        <div class="content">内容</div>
        <div class="asideLayout">第三栏</div>
    </div>

</body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,786评论 1 92
  • 收听音频,戳链接,旧号itclan已暂停使用,欢迎关注微信itclanCoder公众号可收听更多音频 前言 关于网...
    itclanCoder阅读 8,203评论 3 30
  • 前言 温馨提示:本文较长,图片较多,本来是想写一篇 CSS 布局方式的,但是奈何 CSS 布局方式种类太多并且实现...
    sunshine小小倩阅读 3,159评论 0 59
  • 中午休息,姜润和苏晓坐在一旁,翘起二踉腿,畅谈“美好未来”。 “你看看楼下一点点奶茶店,每天都排好长的队,营业额不...
    小星晨阅读 339评论 1 3
  • 第二天,我们去了天池,可能是天气影响心情的原因,个人感觉比起九寨沟来,小了许多,远不如九寨漂亮,有一点失望吧。 天...
    非言飞语阅读 258评论 0 1