css面试常考布局(圣杯布局、双飞翼布局、三栏布局、两栏布局、三角形)

两栏布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
     <!-- flex实现 -->
    <div style="display: flex;height:100%">
        <div style="background-color: red;width:100px;%">
            1
        </div>
        <div style="background-color: blue;flex:1 0 0">
            2
        </div>
    </div>
    <!-- grid实现 -->
    <div style="display: grid;width:100vw;grid-template-columns:200px auto">
        <div style="background-color: green;">
            1
        </div>
        <div style="background-color: black;">
            2
        </div>
    </div>
    
    f <!-- float实现 -->
    <div>
        <div style="float: left;background-color:chocolate;width:100px">
            1
        </div>
        <!-- margin-left使得内容不会占据左侧高度 -->
        <div style="background-color: yellow;margin-left:100px">
          2
        </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">
    <title>Document</title>
</head>

<body>
    <div style="display: flex;">
        <div style="background: red;width:100px">
            1
        </div>
        <div style="flex:1;background: yellow;">
            2
        </div>
        <div style="width:100px;background: blue;">
            3
        </div>
    </div>
    <div style="display: grid;grid-template-columns:100px 1fr 100px">
        <div style="background:green">1</div>
        <div style="background:black">2</div>
        <div style="background:red"> 3</div>
    </div>
	
    <div style="margin-top: 100px;">
        <div style="background:green;float:left;width:100px">1</div>
        <div style="background:red;float:right;width:100px"> 3</div>
        <!-- 中间一栏必须放到最后 -->
        <!-- 如何放到中间,会导致float:right换行 -->
        <div style="background:yellow;margin-left:100px;margin-right:100px">2</div>
    </div>
</body>

</html>

圣杯布局

圣杯布局要求
  • header和footer各自占领屏幕所有宽度,高度固定。
  • 中间的container是一个三栏布局。三栏布局两侧宽度固定不变,中间部分自动填充整个区域。
  • 中间部分的高度是三栏中最高的区域的高度。
  • 中间部分最先渲染

因为中间部分最先渲染,就需要把中间部分写在html中左右前面

左侧的栏目偏移量等于 right偏移自身元素+margin-left:-100%(父元素的大小)

<!DOCTYPE html>
<html>
<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>

</head>

<body>
    <style>
        #header {
            width: 100vw;
            background-color: red;
        }

        #middle {
            padding: 0 100px;
            overflow: hidden;
        }

        .column {
            float: left;
        }

        #center {
            background-color: pink;
            width: 100%;
        }

        #left {
            background-color: blue;
            margin-left: -100%;
            position: relative;
            width: 100px;
            right: 100px
        }

        #right {
            background-color: green;
            margin-right: -100px;
            width: 100px;
        }

        #footer {
            width: 100vw;
            background-color: yellow;
        }
    </style>
    <div id="header">header</div>
    <div id="middle">
        <div id="center" class="column">
            center
        </div>
        <div id="left" class="column">
            left
        </div>
        <div id="right" class="column">
            right
        </div>
    </div>
    <div id="footer">footer</div>
</body>

</html>

对于margin左右两边设置负责可以参考以下

可以看到,设置 margin-right 负值后,橙色方块 自身不动,但其右边的灰色方块 向左偏移

#container{
    display: flex;
}

#left{
    margin-right: -20px;
}

img

设置负值的现象
margin-left自身向左移动
margin-top自身向上移动
margin-right自身不动,其右边元素向左移动
margin-bottom自身不动,其下方元素向上移动

双飞翼布局

  • 中间的container是一个三栏布局。
  • 三栏布局两侧宽度固定不变,中间部分自动填充整个区域。
  • 中间部分的高度是三栏中最高的区域的高度。
  • 中间部分的背景包括左右两边
  • 中间部分的内容最先渲染

所以和三栏布局的最大不同就是中间部分要在最前面

大体实现和圣杯布局差不多,主要就是使用padding限制中间盒子的内容,圣杯布局使用margin限制和两边盒子的距离

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div>
        <div style="background:blue;float: left;width:100%">
            <!-- div的content会被覆盖掉 -->
            <div style="padding: 0 100px;">
                main
            </div>
        </div>
        <!-- 整个元素偏移 -->
        <div style="width:100px;float:left;background:red;margin-left:-100%">22222</div>
        <div style="float: left;background:yellow;width:100px;margin-left:-100px">3</div>
    </div>
</body>

</html>

css三角形

CSS绘制三角形主要用到的是border属性,也就是边框。

平时在给盒子设置边框时,往往都设置很窄,就可能误以为边框是由矩形组成的。实际上,border属性是右三角形组成的,下面看一个例子:

div {
    width: 0;
    height: 0;
    border: 100px solid;
    border-color: orange blue red green;
}

将元素的长宽都设置为0,显示出来的效果是这样的: img 所以可以根据border这个特性来绘制三角形:

div {    
    width: 0;  
    height: 0;   
    border-left: 50px solid red;  
    border-top: 50px solid transparent; //透明
    border-bottom: 50px solid transparent;//透明
}

在这里插入图片描述

为什么需要 border-topborder-bottom

  • 形成三角形的斜边
    • 当你设置了 border-left 为有颜色(比如红色)的边框时,它会成为三角形的一个直角边
    • 通过设置 **透明的 border-top**border-bottom,这两个透明的边框会让整个元素看起来像是一个“尖锐的顶端”,从而形成一个三角形的外观。
  • 保持元素的比例
    • 如果只有 border-left 而没有上下透明的边框,元素本身不会有高度,只有边框的颜色会显示出来。没有透明的上下边框,红色的左边框会被压缩或拉伸,无法形成一个完整的三角形形状。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

arcgisPro加载天地图(CGCS2000)影像

1、注册天地图账号&#xff1b; 2、申请key&#xff1b; 3、添加WMTS服务器。 这里已经办好了前两步&#xff0c;下面详细介绍最后一步。 添加WMTS服务器。 在天地图网站&#xff0c;找到如下页面&#xff0c; 复制网址&#xff0c;如&#xff1a;http://t0.tianditu.gov.cn…

继承(7)

大家好&#xff0c;今天我们继续来学习一下继承的知识&#xff0c;这方面需要大家勤动脑才能理解&#xff0c;那么我们来看。 1.9 protected关键字 在类和对象章节中&#xff0c;为了实现封装特性,java中引入访向限定符,主要限定:类或者类中成员能否在类外和其他包中被访问. …

ModuleNotFoundError: No module named ‘podm.metrics‘报错等解决方法

ModuleNotFoundError: No module named podm.metrics’报错等解决方法 podm.metrics 在运行时报错&#xff1a; ModuleNotFoundError: No module named ‘podm.metrics’ 安装了podm后还是报错 解决方法&#xff1a; 查看安装位置 查看podm的安装位置&#xff0c;并打开到该…

HDFS异构存储和存储策略

一、HDFS异构存储类型 1.1 冷、热、温、冻数据 通常&#xff0c;公司或者组织总是有相当多的历史数据占用昂贵的存储空间。典型的数据使用模式是新传入的数据被应用程序大量使用&#xff0c;从而该数据被标记为"热"数据。随着时间的推移&#xff0c;存储的数据每周…

sklearn-逻辑回归-制作评分卡

目录 数据集处理 分箱 分多少个箱子合适 分箱要达成什么样的效果 对一个特征进行分箱的步骤 分箱的实现 封装计算 WOE 值和 IV值函数 画IV曲线&#xff0c;判断最佳分箱数量 结论 pd.qcut 执行报错 功能函数封装 判断分箱个数 在银行借贷场景中&#xff0c;评分卡是…

中学综合素质笔记3

第一章职业理念 第三节 教师观 考情提示&#xff1a; 单选题材料分析题 学习要求&#xff1a; 理解、 识记、 运用 &#xff08;一&#xff09;教师职业角色的转变&#xff08;单选材料分析&#xff09; 从教师与学生的关系看——对学生 新课程要求教师应该是学生学习的引…

【Linux】设备驱动中的ioctl详解

在Linux设备驱动开发中&#xff0c;ioctl&#xff08;输入输出控制&#xff09;是一个非常重要的接口&#xff0c;用于用户空间应用程序与内核空间设备驱动之间进行通信。通过ioctl&#xff0c;应用程序可以发送命令给设备驱动&#xff0c;控制设备的行为或获取设备的状态信息。…

linux上使用cmake编译的方法

一、hello 例程仅基于一个cpp文件 C文件或工程进行编译时可以使用g指令&#xff08;需要对每一个程序和源文件分别使用g指令编译&#xff09;&#xff0c;当程序变大时&#xff0c;一个工程文件往往会包含很文件夹和源文件&#xff0c;这时我们需要的编译指令将越来越长&#…

(vue)el-table-column type=“selection“表格选框怎么根据条件添加禁选

(vue)el-table-column type"selection"表格选框怎么根据条件添加禁选 html <el-table:data"tableData"style"width: 100%"><el-table-columntype"selection"width"55":selectable"checkSelectable">…

linux nginx 安装后,发现SSL模块未安装,如何处理?

&#x1f468;‍⚕ 主页&#xff1a; gis分享者 &#x1f468;‍⚕ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕ 收录于专栏&#xff1a;运维工程师 文章目录 前言SSL模块安装 前言 nginx 安装后&#xff0c;发现SSL模块未安装&…

kubeneters-循序渐进Cilium网络(二)

文章目录 概要IP 地址配置接口配置解析结论 概要 接续前一章节&#xff0c;我们还是以这张图继续深入Cilium网络世界 IP 地址配置 通过检查 Kubernetes 集群的当前环境&#xff0c;可以获取实际的 IP 地址和配置信息。这些信息将被补充到之前的网络示意图中&#xff0c;以使…

虚拟机使用MQ及介绍

mq官网&#xff1a;https://www.rabbitmq.com 一、虚拟机与 MQ 的结合优势 隔离与安全&#xff1a;虚拟机为 MQ 的运行提供了一个独立的环境&#xff0c;与宿主机以及其他虚拟机相互隔离。这意味着即使 MQ 所在的虚拟机出现故障或遭受安全威胁&#xff0c;也不会直接影响到宿主…

比亚迪夏直插家用MPV腹地,“迪王”开启全面销冠新征程

文/王俣祺 导语&#xff1a;比亚迪前脚刚收获2024年的全面成功&#xff0c;后脚立刻就开始布局2025年的产品矩阵了。比亚迪夏的横空出世&#xff0c;看来家用MPV市场也要感受“迪王”的恐怖如斯了。 家用MPV市场的“意外之喜” 1月8日&#xff0c;比亚迪夏终于在万众瞩目之下…

c++入门之 命名空间与输入输出

1、命名空间 1.1使用命名空间的原因 先看一个例子&#xff1a; #include <iostream>int round 0;int main() {printf("%d", round);return 0; }请问&#xff0c;这个程序能跑起来吗&#xff1f; 答案是否定的 原因是&#xff0c;当我们想创建一个全局变量 …

php 使用simplexml_load_string转换xml数据格式失败

本文介绍如何使用php函数解析xml数据为数组。 <?php$a <xml><ToUserName><![CDATA[ww8b77afac71336111]]></ToUserName><FromUserName><![CDATA[sys]]></FromUserName><CreateTime>1736328669</CreateTime><Ms…

12 USART串口通讯

1 串口物理层 两个设备的“DB9接口”之间通过串口信号建立连接&#xff0c;串口信号线中使用“RS232标准”传输数据信号。由于RS232电平标准的信号不能直接被控制器直接识别&#xff0c;所以这些信号会经过“电平转换芯片”转换成控制器能识别的“TTL校准”的电平信号&#xff…

FreePBX 17 on ubuntu24 with Asterisk 20

版本配置&#xff1a; FreePBX 17&#xff08;最新&#xff09; Asterisk 20&#xff08;最新Asterisk 22&#xff0c;但是FreePBX 17最新只支持Asterisk 21&#xff0c;但是21非LTS版本&#xff0c;所以选择Asterisk 20&#xff09; PHP 8.2 Maria DB (v10.11) Node J…

搜广推面经五

饿了么推荐算法 一、介绍InfoNCE Loss、InfoNCE温度系数的作用 InfoNCE Loss&#xff08;Information Noise Contrastive Estimation Loss&#xff09;是一种常用于自监督学习和对比学习中的损失函数&#xff0c;特别是在信息论和无监督学习中有广泛应用。 它的核心思想是通过…

机器学习免费使用的数据集及网站链接

机器学习领域存在许多可以免费使用的数据集&#xff0c;这些数据集来自于学习、研究、比赛等目的。 一、综合性数据集平台 1.Kaggle 网址&#xff1a;Kaggle 数据集https://www.kaggle.com/datasets Kaggle是一个数据科学竞赛和社区平台&#xff0c;提供了大量的数据集供用…

浅尝Appium自动化框架

浅尝Appium自动化框架 Appium自动化框架介绍Appium原理Appium使用安装平台驱动实战 坑 Appium自动化框架介绍 Appium 是一个开源的自动化测试框架&#xff0c;最初设计用于移动应用的测试&#xff0c;但现在它也扩展了对桌面端应用的支持。Appium 使得自动化测试变得更加简单&…