三栏布局——面试/笔试题

news2024/10/7 13:16:48

目录

  • 三栏布局(两端指定宽度,中间自适应)
  • 三栏布局(平均分布)

三栏布局(两端指定宽度,中间自适应)

只介绍简单的写法,圣杯布局之类的比较复杂,实际上越简单越好,所以复杂的就不介绍了

  1. flex布局
<!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>
        .container{
            display: flex;
        }
        .left {
            width: 200px;
            background-color: orange;
        }

        .right {
            width: 200px;
            background-color: green;
        }

        .main {
            /* 中间栏占据所有剩余空间 */
            flex: 1;
            border: 5px solid #000;
            background-color: skyblue;
        }
    </style>
</head>

<body>
    <div class="container">
        <div class="left">左侧</div>
        <div class="main">中间</div>
        <div class="right">右侧</div>
    </div>
</body>

</html>

在这里插入图片描述
2. grid布局

<!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>
        .container{
            display: grid;
            grid-template-columns: 200px auto 200px;
            /* 设置列间距为5px */
            column-gap: 5px;
        }
        .left {
            background-color: orange;
        }

        .right {
            background-color: green;
        }

        .main {
            /* margin值大于左右侧栏的宽度即可 */
            background-color: skyblue;
        }
    </style>
</head>

<body>
    <div class="container">
        <div class="left">左侧</div>
        <div class="main">中间</div>
        <div class="right">右侧</div>
    </div>
</body>

</html>

在这里插入图片描述

  1. 浮动:左侧左浮动,右侧右浮动,左侧栏和右侧栏都脱离了文档/标准流,所以中间栏会顶上去,然后设置左右的magin避免左侧和右侧的栏将中间的栏遮挡
<!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>
        /* .outer{
            columns: 3;
        } */
        .left{
            float: left;
            width: 200px;
            background-color: orange;
        }
        .right{
            float: right;
            width: 200px;
            background-color: green;
        }
        .main{
            /* margin值大于左右侧栏的宽度即可 */
            margin-left: 210px;
            margin-right: 210px;
            background-color: skyblue;
        }
    </style>
</head>

<body>
    <div class="left">左侧</div>
    <div class="right">右侧</div>
    <div class="main">中间</div>
</body>

</html>

在这里插入图片描述
4. 浮动+BFC

<!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>
        .left {
            float: left;
            width: 200px;
            background-color: orange;
        }

        .right {
            float: right;
            width: 200px;
            background-color: green;
        }

        .main {
            /* margin值大于左右侧栏的宽度即可 */
            border: 2px solid #000;
            /* 开启BFC,中间栏会围绕浮动的盒子,而不是被其遮盖。overflow: hidden;只是开启BFC的一种方式,还可以用其他语句开启,如display: flex; */
            overflow: hidden;
            background-color: skyblue;
        }
    </style>
</head>

<body>
    <div class="left">左侧</div>
    <div class="right">右侧</div>
    <div class="main">中间</div>
</body>
</html>

在这里插入图片描述
5. table布局

<!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>
        .container{
            display: table;
            /* 注意table布局中父容器设置宽度100%,否则父容器的宽度是内容撑开的宽度 */
            width: 100%;
        }
        .left {
            display: table-cell;
            width: 200px;
            background-color: orange;
        }

        .right {
            display: table-cell;
            width: 200px;
            background-color: green;
        }

        .main {
            /* 中间栏占据所有剩余空间 */
            display: table-cell;
            border: 5px solid #000;
            background-color: skyblue;
        }
    </style>
</head>

<body>
    <div class="container">
        <div class="left">左侧</div>
        <div class="main">中间</div>
        <div class="right">右侧</div>
    </div>
</body>

</html>

父容器未设置width:100%的情况,父容器的宽度是内容撑开的宽度
在这里插入图片描述
设置后
在这里插入图片描述
6. 定位:左右2栏均设置绝对定位,左栏left:0;,右栏right:0;,左栏和右栏都脱离了文档/标准流,所以中间栏会顶上去,然后设置左右的magin避免左侧和右侧的栏将中间的栏遮挡

<!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>
        .container{
            position: relative;
        }
        .left {
            position: absolute;
            left: 0;
            width: 200px;
            background-color: orange;
        }

        .right {
            position: absolute;
            right: 0;
            width: 200px;
            background-color: green;
        }

        .main {
            /* margin值大于左右侧栏的宽度即可 */
            margin: 0 205px;
            background-color: skyblue;
        }
    </style>
</head>

<body>
    <!-- <div class="container"> -->
        <div class="left">左侧</div>
        <div class="right">右侧</div>
        <div class="main">中间</div>
    <!-- </div> -->
</body>

</html>

在这里插入图片描述

三栏布局(平均分布)

  1. flex布局
<!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>
        .outer {
            display: flex;
        }

        .item {
            flex: 1;
            /* 或如下一行,如果没有设置换行,那么只要width的百分比大于33.33%即可,因为超出部分会平均地压缩,最后的效果还是一样的3栏均分 */
            /* width: 33.33%; */
            /* 或 */
            /* flex: 0 0 33.33%; */
            background: #eee;
            margin: 10px;
        }
    </style>
</head>

<body>
    <div class="outer">
        <div class="item">1/3</div>
        <div class="item">1/3</div>
        <div class="item">1/3</div>
    </div>
</body>
</html>

在这里插入图片描述
2. grid布局

<!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>
        .outer {
            display: grid;
            /* 设置3列,fr表示份数 */
            grid-template-columns: 1fr 1fr 1fr;
            gap: 5px;
        }
        .item {
            background-color: aqua;
        }
    </style>
</head>

<body>
    <div class="outer">
        <div class="item">1/3</div>
        <div class="item">1/3</div>
        <div class="item">1/3</div>
    </div>
</body>

</html>

在这里插入图片描述
3. 浮动

<!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>
        .item {
            /* 设置border-box是为了不让边框占额外的宽度,否则会把盒子挤到另一行 */
            box-sizing: border-box;
            /* 设置边框时为了能看清这是3列 */
            border: 1px solid #000;
            float: left;
            width: 33.3%;
            background-color: aqua;
        }
    </style>
</head>

<body>
    <div class="item">1/3</div>
    <div class="item">1/3</div>
    <div class="item">1/3</div>
</body>

</html>

在这里插入图片描述
4. 父容器设置columns:3

<!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>
        .outer{
            columns: 3;
        }
        .item {
            /* 这个宽度的百分比是相对于每一栏的宽度,每栏之间默认有一些间距 */
            width: 100%;
            background-color: aqua;
        }
    </style>
</head>

<body>
    <div class="outer">
        <div class="item">1/3</div>
        <div class="item">1/3</div>
        <div class="item">1/3</div>
    </div>

</body>

</html>

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1570719.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

博客搭建(hexo+github)

简介 搭建完成网站的如下所示 https://polarday.top/ 使用github托管博客&#xff0c;完全免费不需要购买服务器 博客框架&#xff1a;hexo hexo主题&#xff1a;ICARUS 图床&#xff1a;githubPicGo 编辑&#xff1a;vscode 为什么使用hexo框架&#xff1f;因为hexo是静态框…

阿里云99元服务器性能测评_CPU内存_带宽_系统盘

阿里云服务器99元一年配置为云服务器ECS经济型e实例&#xff0c;2核2G配置、3M固定带宽和40G ESSD Entry系统盘&#xff0c;新用户和老用户均可买&#xff0c;续费不涨价依旧是99元一年&#xff0c;阿里云服务器网aliyunfuwuqi.com来详细说下阿里云99元服务器性能测评&#xff…

opencv使用问题记录一二

opencv介绍 opencv是一个计算机视觉处理软件库&#xff0c;拥有强大的功能和高效的性能。 但是由于早期版本的原因&#xff0c;存在一些与目前主流使用不兼容的问题 问题与解决 RGB通道顺序 一般图片处理类库的通道顺序就是RGB&#xff0c;但是opencv的是反过来的&#xf…

OpenCV入门例程:裁剪图片、模糊检测、黑屏检测

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 本例程运行环境为CentOS7&…

vLLM介绍

vLLM是伯克利大学LMSYS组织开源的大语言模型高速推理框架&#xff0c;旨在极大地提升实时场景下的语言模型服务的吞吐与内存使用效率。vLLM是一个快速且易于使用的库&#xff0c;用于 LLM 推理和服务&#xff0c;可以和HuggingFace 无缝集成。vLLM利用了全新的注意力算法「Page…

SimpleMind Pro 2.3.4中文激活版 思维导图

SimpleMind是一款设计精美、功能齐全的跨平台思维导图软件。它是一个功能强大的优秀的软件工具&#xff0c;可用于头脑风暴的跨平台思维导图。当你和你的朋友坐在一起讨论不同的想法时&#xff0c;你可以很容易地记录下它们&#xff0c;并随时修改它们。思维导图可以帮助你思考…

win10电脑无线网卡优化

近期win10会频繁断网&#xff0c;无任何规律。目前整理搜索后使用以下两种方法优化网卡&#xff0c;更改配置后断网问题得到有效改善。 方法一&#xff1a;在【电源管理】中取消勾选【允许计算机关闭此设备以节约电源】 方法二&#xff1a;【Preferred enable】修改为prefer 5…

c# wpf style 简单试验

1.概要 wpf style 用来控制控件的样式 2.代码 <Window x:Class"WpfApp2.Window5"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.…

Linux操作系统之防火墙、redis安装

目录 一、防火墙 1、防火墙的类别 2、安装iptables(四表五链&#xff09; 一、防火墙 1、防火墙的类别 安全产品 杀毒 针对病毒&#xff0c;特征篡改系统中文件杀毒软件针对处理病毒程序 防火墙 针对木马&#xff0c;特征系统窃密 防火墙针对处理木马 防火墙分为两种 硬件…

【Python基础教程】5. 数

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;python基础教程 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、…

芒果YOLOv8改进154:提出多种<独家原创结构>ReNLANLSK, CPNGhost, CSCLSK, C2fLSK等,基于LSKNet,即插即用

本篇文章内容基于 论文 LSKNet 论文 的核心, 针对其核心,芒果专栏提出多种原创结构 芒果专栏提出基于 LSKNet 的多种原创结构,改进源码教程 | 详情如下🥇 👉1. 原创结构:ReNLANLSK、👉2. 原创结构:CPNLSK 👉3. 原创结构:CSCLSK、 👉4. 原创结构:C3LSK、 👉5…

labelme、labelimg的安装及使用(含格式转换)

目录 labelme、labelimg简要介绍 labelme labelimg Anaconda虚拟环境 labelme安装 labelme的使用 labelimg安装 labelimg的使用 json格式转换 标注便携操作 labelme、labelimg简要介绍 labelme和labelimg都是图像标注工具&#xff0c;它们在机器学习和计算机视觉领…

在CentOS 8.5.2111下安装vncserver tigervnc-server

# 参考&#xff1a; How to Install TigerVNC Server on CentOS 8 前提&#xff1a; 默认用root操作所有命令 安装桌面GUI dnf groupinstall "Server with GUI" 安装tigervnc-server dnf install tigervnc-server 增加vncuser用户&#xff08;这里默认就是vncuse…

基础数据结构-链表,栈,队列

链表 常见的链表有单链表和双链表 单链表&#xff1a;每个结点有一个next指针指向下一个结点&#xff0c;data存放数据 双链表&#xff1a;每个结点有一个next指针指向下一个结点&#xff0c;prev指针指向上一个结点&#xff0c;data存放数据。 4的下一结点为-1&#xff0c;…

【GO语言卵细胞级别教程】11.探索Go语言的面向对象编程之美(含源码仅此一份,先到先得)

【GO语言卵细胞级别教程】11.探索Go语言的面向对象编程之美&#xff08;含源码仅此一份&#xff0c;先到先得&#xff09; 目录 【GO语言卵细胞级别教程】11.探索Go语言的面向对象编程之美&#xff08;含源码仅此一份&#xff0c;先到先得&#xff09;1.面向对象的引用1.1简介1…

详解TCP/IP五层模型

目录 一、什么是TCP五层模型&#xff1f; 二、TCP五层模型的详细内容 1. 应用层 2. 传输层 3. 网络层 4. 数据链路层 5. 物理层 三、网络设备所在分层 封装和分⽤ 三、Java示例 引言&#xff1a; 在网络通信中&#xff0c;TCP/IP协议是至关重要的。为了更好地理解TCP协议的工…

02-JDK新特性-try-with-resources自动管理资源关闭

try-with-resources 为什么要介绍这个了 看看一下以下代码&#xff1a; public static void fileCopyByTryWithResources(File src, File des) throws IOException {try (FileInputStream fis new FileInputStream(src); FileOutputStream fos new FileOutputStream(des);…

AI预测福彩3D第26弹【2024年4月4日预测--第4套算法重新开始计算第11次测试】

今天清明节假日&#xff0c;一会要外出&#xff0c;可能要晚点回来。咱们尽早先把预测数据跑完&#xff0c;把结果发出来供各位彩友参考。合并下算法&#xff0c;3D的预测以后将重点测试本套算法&#xff0c;因为本套算法的命中率较高。以后有时间的话会在第二篇文章中发布排列…

微电网优化:基于肝癌算法(Liver Cancer algorithm, LCA)的微电网优化(提供MATLAB代码)

一、微电网优化模型 微电网是一个相对独立的本地化电力单元&#xff0c;用户现场的分布式发电可以支持用电需求。为此&#xff0c;您的微电网将接入、监控、预测和控制您本地的分布式能源系统&#xff0c;同时强化供电系统的弹性&#xff0c;保障您的用电更经济。您可以在连接…

Vue3【进阶】

简介 https://cn.vuejs.org/guide/introduction.html 创建vue3工程 【基于 vue-cli创建】 基本和vue-cli的过程类似&#xff0c;只是选择的时候用vue3创建 【基于vite创建】【推荐】 【官网】https://vitejs.cn/ 【可以先去学一下webpack】 步骤 【https://cn.vitejs.…