前端基础笔记

news2025/1/18 12:35:57

 CSS篇

CSS盒模型
content,padding,border,margin
盒模型类型
标准盒模型:margin+ border+padding +content
IE盒模型: margin + content 使用box-sizing:border-box
控制盒模型模式:box-sizing:content-box

CSS选择器的优先级:
  继承性,层叠性,优先级:写CSS写样式时,给同一个元素添加多个样式,谁的权重高就显示谁的样式
  标签选择器,
  !important > 行内样式style =“” > id > 类class > 标签label > 全局选择器*
  
隐藏元素的方法:
display:none,元素在页面上消失,不占据空间
opacity:0,设置了元素的透明度,透明度为0,占据空间位置
visibility:hidden 让元素消失,占据空间位置

px和rem的区别是什么
px是像素,绝对单位长度
rem相对单位长度,相对于html根节点的font-size的值改变
1rem = 16px;

重绘和重排的区别?
重排:布局引擎会根据所有样式计算盒模型在页面上的位置和大小。
重绘:对样式进行修改,没有修改位置,大小,浏览器根据盒模型的特性进行绘制
浏览器的渲染机制
html生成dom树,css生成样式树,dom树和样式树结合渲染(绘制)进行display显示
DOM修改大小位置后就会重排,例如增加div,影响了布局
对DOM的样式增加了属性,没有增加新的dom,不用计算元素的几何属性,就会进行重绘。

让元素垂直水平居中的的方式
定位+margin width 和 height 写为父元素的一半,margin:auto

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Positioning and Margin Auto Centering Example</title>
    <style>
        /* 父元素样式 */
        .parent {
            /* 设置父元素的尺寸 */
            width: 100%; /* 可以根据需要设置具体宽度 */
            height: 500px; /* 示例高度 */
            /* 设置背景颜色以便观察 */
            background-color: #f0f0f0;
            /* 设置定位属性 */
            position: relative; /* 可以是relative或absolute等,取决于具体布局需求 */
        }

        /* 子元素样式 */
        .child {
            /* 子元素的宽度和高度设置为父元素的一半,这里仅为示例 */
            width: 50%; /* 父元素宽度的一半 */
            height: 250px; /* 父元素高度的一半,仅为示例 */
            /* 设置背景颜色以便观察 */
            background-color: red;
            /* 设置定位属性 */
            position: absolute;
            /* 设置外边距为自动,实现居中 */
            margin: auto;
            /* 设置子元素的定位位置 */
            top: 0;
            right: 0;
            bottom: 0;
            left: 0;
        }
    </style>
</head>
<body>
    <!-- 父元素 -->
    <div class="parent">
        <!-- 子元素 -->
        <div class="child"></div>
    </div>
</body>
</html>


定位+transform

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Transform Translate Example</title>
    <style>
        /* 设置body的样式,让整个页面没有默认的外边距和内边距 */
        body {
            margin: 0;
            padding: 0;
            /* 设置body的高度为100vh,即视口高度的100%,这样可以方便我们观察居中效果 */
            height: 100vh;
            /* 设置背景颜色为浅灰色,以便更好地看到居中的方块 */
            background-color: #f0f0f0;
            /* 设置body为相对定位,这样它的子元素可以基于它进行绝对定位 */
            position: relative;
        }

        /* 设置方块的样式 */
        .box {
            /* 设置方块的宽度和高度 */
            width: 100px;
            height: 100px;
            /* 设置方块的背景颜色为红色 */
            background-color: red;
            /* 设置方块为绝对定位 */
            position: absolute;
            /* 将方块的左上角定位到距离body顶部50%、左侧50%的位置 */
            top: 50%;
            left: 50%;
            /* 通过transform属性将方块向左平移自身宽度的一半,向上平移自身高度的一半,实现居中 */
            transform: translate(-50%, -50%);
        }
    </style>
</head>
<body>
    <!-- 创建一个方块元素 -->
    <div class="box"></div>
</body>
</html>


flex布局实现:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Flexbox Centering Example</title>
    <style>
        /* 设置body的样式,让整个页面没有默认的外边距和内边距 */
        body {
            margin: 0;
            padding: 0;
            /* 设置body的高度为100vh,即视口高度的100%,这样可以方便我们观察居中效果 */
            height: 100vh;
            /* 设置背景颜色为浅灰色,以便更好地看到居中的方块 */
            background-color: #f0f0f0;
            /* 使用flex布局 */
            display: flex;
            /* 使子元素在交叉轴(垂直方向)上居中 */
            align-items: center;
            /* 使子元素在主轴(水平方向)上居中 */
            justify-content: center;
        }

        /* 设置方块的样式 */
        .box {
            /* 设置方块的宽度和高度 */
            width: 100px;
            height: 100px;
            /* 设置方块的背景颜色为红色 */
            background-color: rgba(71, 11, 210, 0.82);
        }
    </style>
</head>
<body>
    <!-- 创建一个方块元素 -->
    <div class="box"></div>
</body>
</html>


grid布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Grid Layout Centering Example</title>
    <style>
        /* 父元素样式 */
        .container {
            /* 设置容器的高度,这里设置为视口高度的100%,以便观察居中效果 */
            height: 100vh;
            /* 设置背景颜色以便观察 */
            background-color: #f0f0f0;
            /* 使用grid布局 */
            display: grid;
            /* 设置网格的行和列,这里使用fr单位表示分数,1fr表示占据可用空间的1份 */
            grid-template-rows: 1fr;
            grid-template-columns: 1fr;
            /* 使子元素在网格中居中 */
            place-items: center;
        }

        /* 子元素样式 */
        .item {
            /* 设置子元素的宽度和高度 */
            width: 200px;
            height: 200px;
            /* 设置背景颜色以便观察 */
            background-color: red;
        }
    </style>
</head>
<body>
    <!-- 网格容器 -->
    <div class="container">
        <!-- 网格项 -->
        <div class="item"></div>
    </div>
</body>
</html>


table布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Table Layout Centering Example</title>
    <style>
        /* 表格样式 */
        .table-layout {
            /* 设置表格的宽度和高度,这里设置为100%和视口高度的100%,以便观察居中效果 */
            width: 100%;
            height: 100vh;
            /* 设置表格的布局方式为表格布局 */
            display: table;
            /* 设置背景颜色以便观察 */
            background-color: #f0f0f0;
        }

        /* 表格行样式 */
        .table-row {
            /* 设置表格行的布局方式为表格行 */
            display: table-row;
        }

        /* 表格单元格样式 */
        .table-cell {
            /* 设置表格单元格的布局方式为表格单元格 */
            display: table-cell;
            /* 使内容在单元格中垂直居中 */
            vertical-align: middle;
            /* 使内容在单元格中水平居中 */
            text-align: center;
        }

        /* 子元素样式 */
        .centered-item {
            /* 设置子元素的宽度和高度 */
            width: 200px;
            height: 200px;
            /* 设置背景颜色以便观察 */
            background-color: red;
            /* 使子元素在单元格中居中显示 */
            display: inline-block;
        }
    </style>
</head>
<body>
    <!-- 表格布局容器 -->
    <div class="table-layout">
        <!-- 表格行 -->
        <div class="table-row">
            <!-- 表格单元格 -->
            <div class="table-cell">
                <!-- 需要居中的元素 -->
                <div class="centered-item"></div>
            </div>
        </div>
    </div>
</body>
</html>

使用表格布局的弊端

  1. 资源消耗与下载延迟

    • 表格元素相较于其他HTML标签,往往占用更多的字节数。这会导致页面下载时间延长,进而增加服务器的流量负担。例如,一个复杂的表格布局可能包含大量的<table><tr><td>等标签以及相关的属性和嵌套结构,这些冗余的代码在传输过程中会占用更多的带宽,降低页面加载速度,影响用户体验。

  2. 渲染效率低下

    • 表格会干扰浏览器渲染引擎的正常渲染流程,从而延缓页面的生成速度。浏览器在解析和渲染表格时,需要花费更多的时间来计算表格的布局和尺寸,特别是对于包含大量数据和复杂结构的表格,这种延迟会更加明显,让用户等待时间变长,影响页面的交互性和响应性。

  3. 灵活性不足

    • 一旦表格的设计确定,后期通过CSS对其进行修改和调整的难度较大。表格布局的结构相对固定,其行、列和单元格之间的关系较为复杂,很难像使用Flexbox或Grid布局那样,通过简单的CSS属性修改就能实现布局的灵活变化。例如,若要改变表格中某个单元格的位置或尺寸,可能需要重新调整整个表格的结构,这在维护和更新页面时会带来诸多不便。

  4. 搜索引擎优化(SEO)受限

    • 表格布局不利于搜索引擎抓取页面信息,可能会对网站的排名产生负面影响。搜索引擎通常更倾向于抓取结构清晰、语义明确的HTML内容。而表格布局往往包含大量的非语义化标签和复杂的嵌套结构,这会干扰搜索引擎对页面内容的理解和索引。例如,搜索引擎可能难以准确识别表格中哪些内容是重要的标题、哪些是关键的数据等,从而降低页面在搜索结果中的相关性和排名。

 推荐使用flex或grid布局,简单高效

css属性哪些可以继承?
CSS特性:继承性,层叠性,优先级

line-height,font,visibility:hidden,list-style可以被继承

在CSS中,padding(内边距)属性是不会被继承的。同样,盒模型的其他组成部分,如margin(外边距)、border(边框)和width/height(宽度/高度)等属性也不会被继承。这些属性都是应用于元素自身的,不会自动传递给子元素。

举例代码:
 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS Inheritance Example with Visibility</title>
    <style>
        /* 父元素样式 */
        .parent {
            line-height: 2; /* 设置行高 */
            font: 16px Arial, sans-serif; /* 设置字体大小和字体系列 */
            visibility: visible; /* 设置可见 */
            list-style: square inside; /* 设置列表样式 */
            border-spacing: 10px; /* 对于表格,设置边框间距 */
            /* 为了更好地展示,给父元素添加一些背景颜色和内边距 */
            background-color: #f0f0f0;
            padding: 20px;
        }

        /* 子元素样式 */
        .child {
            /* 子元素会继承父元素的行高和字体样式 */
            /* 这里可以添加一些自己的样式 */
            color: blue; /* 设置文本颜色 */
        }

        /* 表格样式 */
        table {
            border-collapse: separate; /* 与border-spacing配合使用 */
            border-spacing: 10px; /* 设置表格边框间距 */
        }

        /* 列表样式 */
        ul {
            /* 列表样式会继承,但这里可以覆盖 */
            list-style: disc outside; /* 修改列表样式 */
        }
    </style>
</head>
<body>
    <div class="parent">
        这是父元素文本。<br>
        <span class="child">这是子元素文本,会继承父元素的行高和字体。</span>
        <ul>
            <li>列表项1,会继承父元素的列表样式,但这里被覆盖了。</li>
            <li>列表项2。</li>
        </ul>
        <!-- 表格边框间距设置在<table>标签上 -->
        <table>
            <tr>
                <td>表格单元格1</td>
                <td>表格单元格2</td>
            </tr>
        </table>
    </div>
</body>
</html>

什么是继承性?
父元素设置一些样式,子元素可以拿来使用,被动的生效

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

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

相关文章

当PHP遇上区块链:一场奇妙的技术之旅

PHP 与区块链的邂逅 在技术的广袤宇宙中&#xff0c;区块链技术如同一颗耀眼的新星&#xff0c;以其去中心化、不可篡改、透明等特性&#xff0c;掀起了一场席卷全球的变革浪潮。众多开发者怀揣着对新技术的热忱与探索精神&#xff0c;纷纷投身于区块链开发的领域&#xff0c;试…

unity——Preject3——开始界面拼面板

目录 1.创建panel&#xff0c;去掉panel自带的image&#xff0c;自己加一个image&#xff0c;使用锚点分配好 2.锚点&#xff08;快捷键点击后 ALTShift&#xff09; 锚点是什么&#xff1f; 锚点的实际例子 例子1&#xff1a;固定在父容器的中心 例子2&#xff1a;对齐到…

PyTorch使用教程(6)一文讲清楚torch.nn和torch.nn.functional的区别

torch.nn 和 torch.nn.functional 在 PyTorch 中都是用于构建神经网络的重要组件&#xff0c;但它们在设计理念、使用方式和功能上存在一些显著的区别。以下是关于这两个模块的详细区别&#xff1a; 1. 继承方式与结构 torch.nn torch.nn 中的模块大多数是通过继承 torch.nn…

传统以太网问题与VLAN技术详解

传统以太网的问题 广播域&#xff1a;在网络中能接收同一广播信息的所有设备&#xff08;计算机、交换机&#xff09;等的集合 说明&#xff1a;在一个广播域内&#xff0c;当一个设备发送广播帧时&#xff0c;该域内的所有设备都能接收到这个广播帧。工作原理&#xff1a;在以…

OpenAI Whisper:语音识别技术的革新者—深入架构与参数

当下语音识别技术正以前所未有的速度发展&#xff0c;极大地推动了人机交互的便利性和效率。OpenAI的Whisper系统无疑是这一领域的佼佼者&#xff0c;它凭借其卓越的性能、广泛的适用性和创新的技术架构&#xff0c;正在重新定义语音转文本技术的规则。今天我们一起了解一下Whi…

WPS计算机二级•高效操作技巧

听说这里是目录哦 斜线表头 展示项目名称&#x1f34b;‍&#x1f7e9;横排转竖排&#x1f350;批量删除表格空白行&#x1f348;方法一方法二建辅助列找空值 能量站&#x1f61a; 斜线表头 展示项目名称&#x1f34b;‍&#x1f7e9; 选中单元格&#xff0c;单击右键➡️“设…

RabbitMQ实现延迟消息发送——实战篇

在项目中&#xff0c;我们经常需要使用消息队列来实现延迟任务&#xff0c;本篇文章就向各位介绍使用RabbitMQ如何实现延迟消息发送&#xff0c;由于是实战篇&#xff0c;所以不会讲太多理论的知识&#xff0c;还不太理解的可以先看看MQ的延迟消息的一个实现原理再来看这篇文章…

《Keras 3 在 TPU 上的肺炎分类》

Keras 3 在 TPU 上的肺炎分类 作者&#xff1a;Amy MiHyun Jang创建日期&#xff1a;2020/07/28最后修改时间&#xff1a;2024/02/12描述&#xff1a;TPU 上的医学图像分类。 &#xff08;i&#xff09; 此示例使用 Keras 3 在 Colab 中查看 GitHub 源 简介 设置 本教程将介…

1.17组会汇报

STRUC-BENCH: Are Large Language Models Good at Generating Complex Structured Tabular Data? STRUC-BENCH&#xff1a;大型语言模型擅长生成复杂的结构化表格数据吗&#xff1f;23年arXiv.org 1概括 这篇论文旨在评估大型语言模型&#xff08;LLMs&#xff09;在生成结构…

PyTorch使用教程(2)-torch包

1、简介 torch包是PyTorch框架最外层的包&#xff0c;主要是包含了张量的创建和基本操作、随机数生成器、序列化、局部梯度操作的上下文管理器等等&#xff0c;内容很多。我们基础学习的时候&#xff0c;只有关注张量的创建、序列化&#xff0c;随机数、张量的数学数学计算等常…

idea gradle compiler error: package xxx does not exist

idea 编译运行task时报项目内的包不存在&#xff0c;如果你试了网上的其它方法还不能解决&#xff0c;应该是你更新了新版idea&#xff0c;项目用的是旧版jdk&#xff0c;请在以下编译器设置中把项目JDK字节码版本设为8&#xff08;jdk1.8&#xff0c;我这里是17请自行选择&…

Nmap之企业漏洞扫描(Enterprise Vulnerability Scanning for Nmap)

简介 Namp是一个开源的网络连接端扫描软件&#xff0c;主要用于网络发现和安全审核。‌它可以帮助用户识别网络上的设备、分析它们的服务、检测操作系统类型&#xff0c;甚至发现潜在的安全漏洞。Nmap由Fyodor开发&#xff0c;最初是为了满足网络管理员的需求&#xff0c;但随…

RabbitMQ前置概念

文章目录 1.AMQP协议是什么&#xff1f;2.rabbitmq端口介绍3.消息队列的作用和使用场景4.rabbitmq工作原理5.整体架构核心概念6.使用7.消费者消息推送限制&#xff08;work模型&#xff09;8.fanout交换机9.Direct交换机10.Topic交换机&#xff08;推荐&#xff09;11.声明队列…

RabbitMQ---TTL与死信

&#xff08;一&#xff09;TTL 1.TTL概念 TTL又叫过期时间 RabbitMQ可以对队列和消息设置TTL&#xff0c;当消息到达过期时间还没有被消费时就会自动删除 注&#xff1a;这里我们说的对队列设置TTL,是对队列上的消息设置TTL并不是对队列本身&#xff0c;不是说队列过期时间…

MySQL8数据库全攻略:版本特性、下载、安装、卸载与管理工具详解

大家好&#xff0c;我是袁庭新。 MySQL作为企业项目中的主流数据库&#xff0c;其5.x和8.x版本尤为常用。本文将详细介绍MySQL 8.x的特性、下载、安装、服务管理、卸载及管理工具&#xff0c;旨在帮助用户更好地掌握和使用MySQL数据库。 1.MySQL版本及下载 企业项目中使用的…

хорошо哈拉少wordpress俄语主题

хорошо哈拉少wordpress俄语主题 wordpress俄文网站模板&#xff0c;推荐做俄罗斯市场的外贸公司建俄语独立站使用。 演示 https://www.jianzhanpress.com/?p7360

【STM32-学习笔记-10-】BKP备份寄存器+时间戳

文章目录 BKP备份寄存器Ⅰ、BKP简介1. BKP的基本功能2. BKP的存储容量3. BKP的访问和操作4. BKP的应用场景5. BKP的控制寄存器 Ⅱ、BKP基本结构Ⅲ、BKP函数Ⅳ、BKP使用示例 时间戳一、Unix时间戳二、时间戳的转换&#xff08;time.h函数介绍&#xff09;Ⅰ、time()Ⅱ、mktime()…

Python毕业设计选题:基于python的酒店推荐系统_django+hadoop

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员功能界面 用户管理 酒店客房管理 客房类型管理 客房预定管理 用户…

【c++继承篇】--继承之道:在C++的世界中编织血脉与传承

目录 引言 一、定义二、继承定义格式2.1定义格式2.2继承关系和访问限定符2.3继承后子类访问权限 三、基类和派生类赋值转换四、继承的作用域4.1同名变量4.2同名函数 五、派生类的默认成员构造函数5.1**构造函数调用顺序&#xff1a;**5.2**析构函数调用顺序&#xff1a;**5.3调…

Elasticsearch:Jira 连接器教程第二部分 - 6 个优化技巧

作者&#xff1a;来自 Elastic Gustavo Llermaly 将 Jira 连接到 Elasticsearch 后&#xff0c;我们现在将回顾最佳实践以升级此部署。 在本系列的第一部分中&#xff0c;我们配置了 Jira 连接器并将对象索引到 Elasticsearch 中。在第二部分中&#xff0c;我们将回顾一些最佳实…