水平布局与垂直布局(外边距折叠)

目录

一、效果展示

二、水平布局

1、布局规则(此布局规则基于父子嵌套样式)

2、特殊规则

三、垂直布局

1、规则

2、溢出处理

四、外边距折叠(margin)

1、外边距折叠情况

2、兄弟盒子边距折叠规则

3、父子盒子边距折叠规则

4、父子盒子边距影响解决方案

五、代码实例

1、水平布局

2、垂直布局

3、外边距折叠


一、效果展示

  

二、水平布局

1、布局规则(此布局规则基于父子嵌套样式)

内盒子模型整体 = 外盒子模型内容(content)

即:

(内)margin-left + border-left + padding-left + width + padding-right + border-right + margin-right = (外)width

2、特殊规则

(1)当左边的大小不等于右边大小时,会默认修改margin-right进行填充

(2)当(内)width设置为auto时,width默认为最大

(3)当有margin-left或靠左边的设置为auto时,会优先填充该选项

(3)当有靠左一边的样式(例如margin-left)和width同时设置为auto时,width默认最大,另一个auto会设置为0

(4)当两边的样式(例如margin-left和margin-right)和width同时设置为auto时,width将会居中,两边的样式大小相同

三、垂直布局

1、规则

垂直布局不会出现强制匹配的情况,设置多少就是多少,可以超出也可以不足

2、溢出处理

(1)当子样式height超过父样式height时,为了美观,我们对溢出进行处理

(2)在子样式中加入overflow属性

(3)overfl有auto、hidden、scroll三个值,第一个是自适应,第二个是裁剪隐藏,第三个是滚动条,多用auto

四、外边距折叠(margin)

1、外边距折叠情况

多见于一个盒子加下边距,一个盒子加上边距,则为了节省空缺,只会加上一个边距,也会出现在父子盒子之中

2、兄弟盒子边距折叠规则

(1)两边距符号相同,取绝对值最大

(2)两边距符号不同,取和

3、父子盒子边距折叠规则

子影响父

4、父子盒子边距影响解决方案

不适用外边距,使用padding控制子盒子在父盒子中的位置,缺点,需要修改height

五、代码实例

1、水平布局

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>水平布局</title>
        <style>
            #box1{
                border: red solid 5px;
                height: 100px;
                width: 1000px;
            }
            #inner{
                background-color: #bfa;
                width: 200px;
                margin-left: auto;
                margin-right: auto;
                height: 100%;
            }


            #box2{
                border: red solid 5px;
                height: 100px;
                width: 1000px;
            }
            #outer{
                background-color: #bfa;
                width: 1100px;
                margin-left: auto;
                margin-right: auto;
                height: 100%;
            }

        </style>
    </head>
    <body>
        <div id="box1">
            <div id="inner">
                我是内部的div
            </div>
        </div>

        <div id="box2">
            
            <div id="outer">
                我是第二个div内部的div
            </div>


        </div>

    </body>
</html>

2、垂直布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>垂直布局</title>
    <style>
        #box1{
            background-color: #bfa;
            height: 200px;
            width: 400px;
        }
        #box2{
            height: 200px;
            width: 100%;
            overflow: auto;
            /* overflow-x: scroll;
            overflow-y: scroll; */
            /* overflow: hidden; */
            font-size: 40px;
        }
    </style>
</head>
<body>
    <div id="box1">
        <div id="box2">
            Lorem ipsum dolor sit amet consectetur adipisicing elit. Vitae odit in illum dolorum neque error maxime alias dolore quasi praesentium deserunt a esse est, vero aliquam adipisci? Quod, exercitationem est?
            Lorem, ipsum dolor sit amet consectetur adipisicing elit. Recusandae doloremque consequuntur cupiditate odio aspernatur quia nulla deserunt voluptate perspiciatis mollitia corrupti ullam temporibus animi porro ut, neque natus ex provident.
            Lorem ipsum dolor sit amet consectetur adipisicing elit. Quidem magni animi accusantium necessitatibus aut quibusdam reprehenderit repudiandae quia harum quam quas blanditiis, obcaecati labore voluptates eaque. Consequuntur porro velit assumenda.
        </div>

    </div>
</body>
</html>

3、外边距折叠

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>外边距的折叠</title>
    <style>
        #box1,#box2{
            background-color: #bfa;
            width: 100px;
            height: 100px;
            
        }
        #box1{
            margin-bottom: 100px;
        }
        #box2{
            margin-top: 100px;
            margin-bottom: 100px;
        }
        #box3{
            background-color: red;
            width: 100px;
            height: 50px;
            padding-top: 50px;
        }
        #box4{
            background-color: orange;
            width: 50px;
            height: 50px;
        }
    </style>
</head>
<body>
    <div id="box1"></div>
    <div id="box2"></div>

    <div id="box3">
        <div id="box4"></div>
    </div>
</body>
</html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Streamlit是一个用于创建数据应用程序的开源Python库,它非常适合快速原型设计和数据可视化。在Streamlit中,页面布局可以通过多种方式来创建,包括容器(`st.container`)、网格(`st.grid`)、卡片(`st.beta_expander`)和Markdown文本等。 以下是一些基本的布局元素: 1. **标题和标签**: - `st.title(text)`:设置页面标题。 - `st.subheader(text)`:设置子标题。 2. **容器**: - `st.container()`:创建一个水平垂直的容器,可以添加多个组件。 ```python st.container([st.text('Element 1'), st.text('Element 2')]) ``` 3. **网格布局**: - `st.columns(n)`:创建一个n列的网格布局,其中n是一个整数。 ```python st.columns(2, [st.text('Column 1'), st.text('Column 2')]) ``` 4. **卡片(Expander)**: - `st.beta_expander(title, contents)`:创建一个可折叠的卡片,点击标题后显示内容。 ```python with st.beta_expander('Click to see more'): st.write('This is the content.') ``` 5. **Markdown**: - `st.markdown(text)`:使用Markdown语法编写文本,支持富文本格式。 ```python st.markdown('# My Heading') ``` 6. **分隔符**: - `st.empty()`:创建一个空白区域,可以用来分隔组件。 - `st.sidebar` 和 `st.beta_container`:创建侧边栏和独立的容器。 7. **响应式布局**: - `st.beta_expander(key='my_key')`:使用`key`参数来控制组件的缓存和重用,对于移动设备的响应式布局很有帮助。 要了解更多布局选项,你可以查阅官方文档:https://streamlit.io/docs/api

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值