多种布局的使用方法

想要了解多栏布局,我们首先要知道多栏布局里面具体有哪些?

多栏布局具体分为这几个不同的运用方法:

1. 左边固定,右边自适应

2. 圣杯布局

3. 双飞翼布局

4. 等高布局

那么,就让我们开始今天的学习和了解吧!

左边固定,右边自适应的布局:

首先,这是多栏布局最基础的布局,也是最为简便的布局,这个布局的目的就是实现和字面意思一样的结果,首先,我们要设立两个div,并且在后面的div里面嵌套一个div

之后给left加一个position:absolute,让其脱离文档流,然后给right一个百分百的宽度,给right内的box加一个左外边距,其距离和left的宽度一样,目的就是为了让box中的内容不被left所挡住

这样,两栏布局就可以正常实现了!

圣杯布局:

先建立一个div包裹三个div,按照center,left,right依次排开,然后全部浮动,将center设置百分之百,给left和right添加position:relative;

这时候我们发现left和right被挤下去了,这时候我们通过拉动给父元素添加一个左右内边距,再给left的左外边距(margin-left:-100%;)去将其移动到小绿的左上角,right也是拉动左外边距为自身的距离,移动至右上角

这时候我们发现文字被盖住了

这时候我们给left添加一个负属性的自身距离,将自己拉到左边,给right添加一个正属性的自身距离,顶到右边

实现圣杯布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
*{
    margin: 0;
    padding: 0;
}
.all{
    padding: 0 300px;
}
.center{
    width: 100%;
    height: 400px;
    background-color: green;
    float: left;
}

.left{
    width: 300px;
    height: 400px;
    background-color: orange;
    margin-left: -100%;
   float: left;
   position: relative;
   left: -300px;
}

.right{
    width: 300px;
    height: 400px;
    background-color: skyblue;
float: left;
margin-left: -300px;
position: relative;
left: 300px;
}




    </style>
</head>
<body>
    <div class="all">
<div class="center">123232323adwwwwwwwww123ad554rf456sgdf45s4f</div>
    <div class="left"></div>
    <div class="right"></div>
</div>
</body>
</html>
双飞翼布局:

双飞翼布局和圣杯布局是类似的方法,但是用到的方法则是外套div,用里面div的外边距去让center子元素的内容呈现,我们首先给center设置一个widht:100%;全部浮动

然后把左右两个div拉到两边,并让box使用外边距挤开两边

便可实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
*{
    margin: 0;
    padding: 0;
}
.center{
    width: 100%;
    float: left;
    height: 400px;
    background-color: rgb(0, 0, 0);
    
}
.box{
    width: 100%;
    height: 400px;
    background-color: gold;
    margin: 0 300px;
}

.left{
    width: 300px;
    height: 400px;
    background-color: blue;
    float: left;
    margin-left: -100%;
}
.right{
    width: 300px;
    height: 400px;
    background-color: yellow;
    float: left;
    margin-left: -300px;
}

    </style>
</head>
<body>
    <div class="center"><div class="box"></div></div>
    <div class="left"></div>
    <div class="right"></div>
</body>
</html>
等高布局

1、等高布局就是子元素在父元素中保持的同等高度

// 结构
<div class="clearfix wrap">
<div class="left">
    第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列
    第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列

</div>
<div class="center">第二列第二列第二列第二列第二列第二列第二列第二列第二列第二列第二列</div>
<div class="right">第三列</div>

</div>

// 样式
*{
    margin: 0;
    padding: 0;
}
/* 清除浮动 */
.clearfix::after{
    content: '';
    display: block;
    clear: both;
}

/* 外部容器 */
.wrap{
    width: 960px;
    margin: 0 auto;
    overflow: hidden;
    border: 5px solid lawngreen;
}
.left{
    float: left;
    width: 300px;
    background-color: red;
    padding-bottom: 9999px;
    margin-bottom: -9999px;
}
.center{
    float: left;
    width: 300px;
    background-color: blue;
    padding-bottom: 9999px;
    margin-bottom: -9999px;
}
.right{
    float: left;
    width: 300px;
    background-color: green;
    padding-bottom: 9999px;
    margin-bottom: -9999px;
}

优点:结构简单,兼容所有浏览器

缺点:伪等高,需要合理的控制padding和margin的值

2、使用内容撑开

原理:利用内容撑开父元素的特点,给每一列添加相对应的容器,并进行相互嵌套,并在每个容器中添加背景色

注意:有多少列就需要有多少个容器,比如三列 就需要三个容器

// 结构
<div class="wrap">
    <!-- 背景色一 -->
    <div class="bg1">
        <!-- 背景色二 -->
        <div class="bg2">
            <!-- 背景色三 -->
            <div class="clearfix bg3">
                <div class="left">
                    第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列
                    第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列第一列
                </div>
                <div class="center">第二列</div>
                <div class="right">第三列</div>
            </div>
        </div>
    </div>
</div>
// 样式
* {
margin: 0;
padding: 0;
}

/* 清除浮动 */
.clearfix::after {
content: '';
display: block;
clear: both;
}

.wrap{
width: 960px;
margin: 0 auto;
overflow: hidden;
background-color: brown;
}
.bg1{
background-color: red;
width: 100%;
}
.bg2{
width: 100%;
background-color: blue;
position: relative;
left: 200px;
}
.bg3{
width: 100%;
background-color: green;
position: relative;
left: 560px;
}
.bg3 div{
min-height: 100px;
}
.left{
/* background-color: aqua; */
width: 200px;
float: left;
margin-left: -760px;
}
.center{
width: 560px;
float: left;
/* background-color: blueviolet; */
margin-left: -560px;
}
.right{
width: 200px;
float: left;
/* background: yellow; */
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Kotlin实现RecyclerView的多种item布局,需要创建多个ViewHolder来适配不同的布局类型。具体步骤如下: ```kotlin // 创建一个通用的ViewHolder类 class BaseViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { // 绑定数据的方法 fun bindData(data: Any) { // 根据不同的数据类型,绑定不同的布局 when (data) { is TypeA -> { // 绑定TypeA布局 } is TypeB -> { // 绑定TypeB布局 } // ... } } } // 创建一个通用的Adapter类 class BaseAdapter(private val dataList: List<Any>) : RecyclerView.Adapter<BaseViewHolder>() { // 根据不同的布局类型,创建不同的ViewHolder override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder { return when (viewType) { TYPE_A -> { // 创建TypeA布局的ViewHolder } TYPE_B -> { // 创建TypeB布局的ViewHolder } // ... else -> { // 创建默认布局的ViewHolder } } } // 根据不同的数据类型,返回不同的布局类型 override fun getItemViewType(position: Int): Int { return when (dataList[position]) { is TypeA -> TYPE_A is TypeB -> TYPE_B // ... else -> DEFAULT_TYPE } } // 绑定数据到ViewHolder override fun onBindViewHolder(holder: BaseViewHolder, position: Int) { holder.bindData(dataList[position]) } // 返回数据列表的大小 override fun getItemCount(): Int { return dataList.size } companion object { // 定义不同的布局类型 private const val TYPE_A = 0 private const val TYPE_B = 1 // ... private const val DEFAULT_TYPE = -1 } } ``` 在上述代码中,我们创建了一个通用的ViewHolder类和一个通用的Adapter类。ViewHolder类中的bindData方法根据不同的数据类型,绑定不同的布局。Adapter类中的getItemViewType方法根据不同的数据类型,返回不同的布局类型。在onCreateViewHolder方法中,根据不同的布局类型,创建不同的ViewHolder。在onBindViewHolder方法中,将数据绑定到ViewHolder上。最后,在RecyclerView中设置Adapter即可。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值