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 而没有上下透明的边框,元素本身不会有高度,只有边框的颜色会显示出来。没有透明的上下边框,红色的左边框会被压缩或拉伸,无法形成一个完整的三角形形状。

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

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

相关文章

模糊查询在sqlserver、dm8、mysql的编写示例

模糊查询要求&#xff1a;字段值以 25D 开头&#xff0c;并以 4 位数字结尾 sqlserver&#xff1a; select * from table_name where column_name like 25D[0-9][0-9][0-9][0-9] 说明&#xff1a; 25D&#xff1a;表示字符串以 25D 开头。 [0-9][0-9][0-9][0-9]&#xf…

SCTNet模型详解及代码复现

模型背景 随着深度学习技术的发展,语义分割领域取得了显著进展。然而,在实际应用中,特别是在实时场景下,现有模型往往面临计算复杂度高、难以平衡精度和速度等问题。为应对这些挑战,研究人员提出了SCTNet模型,旨在解决实时语义分割问题,同时兼顾精度和效率。该模型融合…

Python的循环

Python的循环 Python的循环有两种&#xff0c;分别是for…in循环和while循环。 for…in 循环 假设我们要循环输出一个列表里的元素&#xff1a; names [张三,李四,王五] for name in names:print(name)执行这段代码后&#xff0c;会依次打印names的每一个元素&#xff1a;…

【0387】Postgres内核 streaming replication(流复制)工作原理

1. Postgres 流复制 本文是关于设置 PostgreSQL 版本流复制的简明指南,力求尽可能不受平台限制。故而,其假定您拥有运用操作系统工具编辑文件及安装/配置软件包的扎实知识。并且,还假定您熟悉 PostgreSQL 的配置情况。 PostgreSQL 内置的流复制为您的数据库构建了一个服务…

网络攻击行为可视化分析系统【数据分析 + 可视化】

一、系统背景 随着信息技术的快速发展&#xff0c;网络已成为现代社会不可或缺的一部分。然而&#xff0c;与此同时&#xff0c;网络攻击手段也日益多样化和复杂化&#xff0c;给企业和个人的信息安全带来了极大的威胁。传统的网络攻击分析方法往往依赖于人工分析和处理大量的…

利用obs studio制作(人像+屏幕)录制影像

1.什么是obs? OBS&#xff08;Open Broadcaster Software&#xff09;是一款功能强大的开源软件&#xff0c;它使用户能够直接从电脑录制视频和直播内容到 Twitch&#xff0c;YouTube 和 Facebook Live 等平台。它在需要直播或录制屏幕活动的游戏玩家、YouTube 用户和专业人士…

蠕虫病毒会给服务器造成哪些危害?

蠕虫病毒是一种独立的恶意计算机程序&#xff0c;可以进行自我复制来传播到其他的计算机系统当中&#xff0c;蠕虫病毒和传统病毒之间是有着区别的&#xff0c;蠕虫病毒不需要宿主程序就能够自行传播&#xff0c;主要是利用各种操作系统漏洞进行攻击的。 接下来小编就介绍一下蠕…

C# GDI+的DrawString无法绘制Tab键的现象

【啰嗦2句】 现在用C#的人很少了吧&#xff1f;GDI更少了吧&#xff1f;所以这个问题估计也冷门。没关系&#xff0c;分享给特定需要的人也不错。 【问题现象】 工作中开发了一个报告编辑器&#xff0c;实现图文排版等功能&#xff0c;用着没什么问题&#xff0c;直到有一天…

互斥信号量的等待与通知

目录 等待互斥信号量 信号量未被占用 信号量被自己占用 信号量被高优先级任务占用 信号量被低优先级任务占用 释放互斥信号量 未发生优先级继承 发生优先级继承 等待互斥信号量 信号量未被占用 标记为已经被占用锁定计数1 信号量被自己占用 锁定计数1 信号量被高优先级任务占用…

夯实前端基础之HTML篇

知识点概览 HTML部分 1. DOM和BOM有什么区别&#xff1f; DOM&#xff08;Document Object Model&#xff09; 当网页被加载时&#xff0c;浏览器会创建页面的对象文档模型&#xff0c;HTML DOM 模型被结构化为对象树 用途&#xff1a; 主要用于网页内容的动态修改和交互&…

Qt资源文件以及文件加密

1、Qt资源文件 在Qt中&#xff0c;资源文件&#xff08;.qrc&#xff09;是一种方便的方式来管理应用程序中的多媒体文件&#xff0c;如图像、图标和其他资源。这些文件使用XML格式定义&#xff0c;并在编译时嵌入到应用程序的二进制文件中。 创建资源文件的步骤如下&#xff…

深入详解人工智能自然语言处理(NLP)之文本处理:分词、词性标注、命名实体识别

【自然语言处理】——深入详解人工智能自然语言处理&#xff08;NLP&#xff09;之文本处理&#xff1a;分词、词性标注、命名实体识别 自然语言处理&#xff08;Natural Language Processing&#xff0c;简称NLP&#xff09;是人工智能的一个重要分支&#xff0c;涉及如何使计…

SD ComfyUI工作流 老照片修复上色

文章目录 老照片修复上色SD模型Node节点工作流程开发与应用效果展示老照片修复上色 该工作流专门设计用于老照片的修复和上色,通过一系列高级的图像处理技术,包括深度图预处理、面部修复、上色和图像放大等步骤,来恢复老照片的质量并增加色彩。首先,工作流加载老照片并进行…

后端技术选型 sa-token校验学习 下 结合项目学习 前后端登录

目录 后端设置 Controller 层 Service 层 后端返回 Token 给前端 1. 用户提交登录请求 2. 后端验证用户身份 3. 返回 Token 4. 前端保存 Token 前端存储 1. 前端向后端发起请求 2. 前端存储一下 Token 3.管理用户认证的 token 的 工具 4. 在 Service 层进行设置 H…

dtdug汇编指令练习

r 通用寄存器 m 代表内存 imm 代表立即数 r8 代表8位通用寄存器 m8 代表8位内存 imm8 代表8位立即数 mov指令练习 MOV 的语法: mov 目标操作数&#xff0c;源操作数 作用:拷贝源操作数到目标操作数 1、源操作数可以是立即数、通用寄存器、段寄存器、或者内存单元. 2、目标操作数…

vue3模板引用ref

1.访问模板引用 要在组合式 API 中获取引用&#xff0c;我们可以使用辅助函数 useTemplateRef() 只可以在组件挂载后才能访问模板引用 <script setup> import { useTemplateRef, onMounted } from vue// 第一个参数必须与模板中的 ref 值匹配 const input useTempla…

如何用 SSH 访问 QNX 虚拟机

QNX 虚拟机默认是开启 SSH 服务的&#xff0c;如果要用 SSH 访问 QNX 虚拟机&#xff0c;就需要知道虚拟机的 IP 地址&#xff0c;用户和密码。本文我们来看看如何获取这些参数。 1. 启动虚拟机 启动过程很慢&#xff0c;请耐心等待。 2. 查看 IP 地址 等待 IDE 连接到虚拟机。…

【Java基础】Java异常捕捉,throws/throw、finally、try、catch关键字的含义与运用

1. Java 异常处理&#xff1a; 异常是程序中的一些错误&#xff0c;但并不是所有的错误都是异常&#xff0c;并且错误有时候是可以避免的。 比如说&#xff0c;你的代码少了一个分号&#xff0c;那么运行出来结果是提示是错 java.lang.Error&#xff1b;如果你用System.out.p…

js 中堆、栈、队列+宏任务+微任务+web workers

文章目录 js 中堆、栈、队列介绍js中 堆、栈、队列的区别与应用拓展&#xff08;宏任务与微任务&#xff09;Web Workers js 中堆、栈、队列介绍 栈&#xff08;Stack&#xff09; 概念&#xff1a; 栈是一种遵循后进先出&#xff08;LIFO - Last In First Out&#xff09;原则…

java面向对象编程特性概述

目录 1. 类和对象 2. 封装&#xff08;Encapsulation&#xff09; 3. 继承&#xff08;Inheritance&#xff09; 4. 多态&#xff08;Polymorphism&#xff09; 5. 抽象&#xff08;Abstraction&#xff09; (1). 抽象类&#xff08;Abstract Class&#xff09; (2).接口…