CSS是一门需要单独学习的技术吗?

  CSS (Cascading Style Sheets) ,做前端开发的人都很清楚,因为这是他们的一项必不可少的技能。我以前也是知道CSS,但从来没有单独学习过,认为就它只是用来渲染网页的表现层效果,定制页面和内元素的布局、颜色和字体等,需要的时候看一下相关知识就可以使用,并且我们大部分的应用都有很好的借助,比如以前的Ease UI、LayUI、Bootstrap,现在的ElementUI、Tailwind CSS等,这些CSS框架已经封装好了样式,还可以跨端,使我们能快速、简单地定制响应式的网页,所以根本不需要花单独的时间去学习。

  其实,这样的认识是有问题的,CSS也需要单独学习、深入领会和掌握。

  昨天同事让我做一个页面,类似B站首页的样式,最重要的是图片(DIV)的排列。我觉得通过DIV的浮动来解决应该挺快就解决,DIV解决了,剩下的DIV内部内容显示就简单了。

  一、使用DIV的浮动
  网页代码:

<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <title>视野主页--DIV的浮动方法</title>
    <style>
        body {
            margin: 0 auto;
            text-align: center;
        }

        .maindiv {
            width: 1600px;
            display: inline-block;
        }

        .container0 {
            width: 630px;
            height: 440px;
            display: inline-block;
            float: left;
            border:solid  #333 1px;
        }

        .container1 {
            width: 951px;
            display: inline-block;
            float: left;
        }

        .box1,.box2 {
            width: 314px;
            height: 220px;
            display: block;
            float: left;
            border: solid #34d657 1px;
        }

        .row1{
            float: left;
            display: block;
        }
        .row2{
            float: left;
            display: block;
        }
</style>
  </head>
  <body>
    <div class="maindiv">
            <div class="row1">
                    <div class="container0">主画面</div>        
                    <div class="container1">
                            <div class="box1">div--A1</div>
                            <div class="box1">div--A2</div>
                            <div class="box1">div--A3</div>
                            <div class="box1">div--B1</div>
                            <div class="box1">div--B2</div>
                            <div class="box1">div--B3</div>
                    </div>
            </div>
            <div  class="row2">
                    <div class="box2">div--C1</div>
                    <div class="box2">div--C2</div>
                    <div class="box2">div--C3</div>
                    <div class="box2">div--C4</div>
                    <div class="box2">div--C5</div>
                    <div class="box2">div--D1</div>
                    <div class="box2">div--D2</div>
                    <div class="box2">div--D3</div>
                    <div class="box2">div--D4</div>
                    <div class="box2">div--D5</div>
            </div>            
    </div>
  </body>
</html>

  效果如下:

  上面就是将内容分两行显示,第二行设置为块的浮动就可以,主要是第一行,分左右两块来显示,右边的也是按块浮动。

  使用浮动可能是以前的做法,现在流行flex,弹性布局。
  二、使用flex
  网页内容:

<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <title>视野主页--flex方法</title>
    <style>
        body {
            margin: 0 auto;
            text-align: center;
        }

        .maindiv {
            margin: 0 auto;
            width: 1600px;
        }

        .container0 {
            width: 630px;
            height: 440px;
            display: flex;
            border:solid  #24a324 1px;
        }

        .container1 {
            width: 970px;
            display: flex;
            flex-wrap: wrap;
        }

        .box1,.box2 {
            width: 315px;
            height: 220px;
            display: flex;
            border: solid #34d657 1px;
        }

        .row1 {
            display: flex;
        }
        
        .row2{
            display: flex;
            flex-wrap: wrap;
        }
</style>
  </head>
  <body>
    <div class="maindiv">
            <div class="row1">
                    <div class="container0">主画面</div>        
                    <div class="container1">
                            <div class="box1">div--A1</div>
                            <div class="box1">div--A2</div>
                            <div class="box1">div--A3</div>
                            <div class="box1">div--B1</div>
                            <div class="box1">div--B2</div>
                            <div class="box1">div--B3</div>
                    </div>
            </div>
            <div  class="row2">
                    <div class="box2">div--C1</div>
                    <div class="box2">div--C2</div>
                    <div class="box2">div--C3</div>
                    <div class="box2">div--C4</div>
                    <div class="box2">div--C5</div>
                    <div class="box2">div--D1</div>
                    <div class="box2">div--D2</div>
                    <div class="box2">div--D3</div>
                    <div class="box2">div--D4</div>
                    <div class="box2">div--D5</div>
            </div>            
    </div>
  </body>
</html>

  效果如下:


  但是感觉没有体现flex的优势,去掉外面的DIV包裹。

  改动网页:

<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <title>视野主页--flex方法</title>
    <style>
        body {
            margin: 0 auto;
            text-align: center;
        }

        .maindiv {
            display: flex;
            margin: 0 auto;
            width: 1600px;
            flex-wrap: wrap;
        }

        .container0 {
            width: 635px;
            height: 442px;
            border:solid  #24a324 1px;
        }

        .container1 {
            width: 960px;
            display: flex;
            flex-wrap: wrap;
        }
        .box{
            width: 315px;
            height: 220px;
            /* display: flex; */
            border: solid #34d657 1px;
        }

        .div-B{
            top: 222px;
        }
</style>
  </head>
  <body>
    <div class="maindiv">
            <div class="container0">主画面</div>
            <div class="container1">
                <div class="box">div--A1</div>
                <div class="box">div--A2</div>
                <div class="box">div--A3</div>
                <div class="box div-B">div--B1</div>
                <div class="box div-B">div--B2</div>
                <div class="box div-B">div--B3</div>    
            </div>        
            <div class="box">div--C1</div>
            <div class="box">div--C2</div>
            <div class="box">div--C3</div>
            <div class="box">div--C4</div>
            <div class="box">div--C5</div>
            <div class="box">div--D1</div>
            <div class="box">div--D2</div>
            <div class="box">div--D3</div>
            <div class="box">div--D4</div>
            <div class="box">div--D5</div>
    </div>
  </body>
</html>

  效果显示:

  感觉还不利索,使用grid来实现就很简单明了。
  三、使用grid

  网页代码:
 

<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <title>视野主页--gird方法</title>
    <style>
        body {
            margin: 0 auto;
            text-align: center;
        }

        .maindiv {
            width: 1600px;
            margin: 0 auto;
            display: grid;
            grid-template-columns: repeat(5, 315px);
            grid-template-rows:  repeat(4, 220px);
        }

        .container0 {
            width: 630px;
            height: 440px;          
            grid-row: span 2;
            grid-column: span 2;
            border: solid #20ae67 1px;
        }

        .box, .div-B {
            width: 315px;
            height: 220px;
            border: solid #18c756 1px;
            grid-column: span 1;
        }
</style>
  </head>
  <body>
    <div class="maindiv">
                    <div class="container0">主画面</div>        
                    <div class="box">div--A1</div>
                    <div class="box">div--A2</div>
                    <div class="box">div--A3</div>
                    <div class="box">div--B1</div>
                    <div class="box">div--B2</div>
                    <div class="box">div--B3</div>
                    <div class="box">div--C1</div>
                    <div class="box">div--C2</div>
                    <div class="box">div--C3</div>
                    <div class="box">div--C4</div>
                    <div class="box">div--C5</div>
                    <div class="box">div--D1</div>
                    <div class="box">div--D2</div>
                    <div class="box">div--D3</div>
                    <div class="box">div--D4</div>
                    <div class="box">div--D5</div>
    </div>
  </body>
</html>

  显示效果:

  这样的效果使用以前的表格布局很简单,网页的内容如下:
  四、使用表格

<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <title>视野主页--表格方法</title>
    <style>
        body {
            margin: 0 auto; 
        }         
        div:before {
            content: '';
            display: inline-block;
            vertical-align: middle;
            height: 100%;
            width: 0;
        }        
        div {
            width: 310px;
            height: 215px;
            border: solid #34d657 2px;
            text-align: center;
        }
        td {
            vertical-align: top;
        }
    </style>
  </head>
  <body>
        <table align="center">
            <tr>
                <td rowspan="2" colspan="2"><div style="width: 630px;height: 442px;">主画面</div></td>
                <td><div>div--A1</div></td>
                <td><div>div--A2</div></td>
                <td><div>div--A3</div></td>
            </tr>
            <tr>
                <td><div>div--B1</div></td>
                <td><div>div--B2</div></td>
                <td><div>div--B3</div></td>
            </tr>
            <tr>
                <td><div>div--C1</div></td>
                <td><div>div--C2</div></td>
                <td><div>div--C3</div></td>
                <td><div>div--C4</div></td>
                <td><div>div--C5</div></td>
            </tr>
            <tr>
                <td><div>div--D1</div></td>
                <td><div>div--D2</div></td>
                <td><div>div--D3</div></td>
                <td><div>div--D4</div></td>
                <td><div>div--D5</div></td>
            </tr>
        </table>
  </body>
</html>

  效果如下:


  因为CSS的不熟,上面的4个简单的页面也折腾了一下午,还有其他的方法没有试,并且还可以直接使用框架来做。
  CSS技术是一门技术吗?
  说它是,可以很少看到有人专门去学习,大多是针对项目去临时学习;说它不是,看看前端的一些CSS的封装包,做得那么好,肯定有相当得技术含量。
  CSS技术是一门技术,这个可能做前端开发时受虐了才有深刻体会。
  掌握了CSS,不但可以读懂一些前端框架包的CSS设定,还可以有目的修改,就像掌握了Javascript就可以更好地使用react、vue等开发框架一样。

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

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

相关文章

python 蓝桥杯处理各种输入的数据

文章目录 空格间隔提取数字 空格间隔提取数字 对于以空格间隔的数字&#xff0c;由于输入的形式是字符串&#xff0c;那么就可以使用split 函数进行对输入的一个分隔&#xff0c;然后利用split 函数返回的是分隔之后的一个列表&#xff0c;再利用下标对于每一个部分进行相对应的…

C++学习Day01之C++对C语言增强和扩展

目录 一、程序及输出1.1 全局变量检测增强1.2 函数检测增强1.3 类型转换检测增强1.4 struct增强1.5 bool类型扩展1.6 三目运算符增强1.7 const增强1.7.1 全局Const对比1.7.2 局部Const对比1.7.3 Const变量初始化数组1.7.3 Const修饰变量的链接性 二、分析总结 一、程序及输出 …

Linux——存储管理

文章目录 基本分区磁盘简介磁盘分类linux的磁盘命名磁盘的分区方式 管理磁盘虚拟机添加硬盘查看磁盘信息磁盘分区流程创建分区创建文件系统挂载mount查看挂载信息 剩余空间继续分区MBR如何划分更多的分区为什么只能有4个主分区扩展分区的引入 逻辑卷LVM是什么特点术语创建LVMVG…

算法40:线段树 + 懒更新

线段树&#xff1a;一种支持范围整体修改和范围整体查询的数据结构 解决的问题范畴&#xff1a; 大范围信息可以只由左、右两侧信息加工出&#xff0c; 而不必遍历左右两个子范围的具体状况。 白话版解释就是&#xff1a;针对数组可以范围进行修改和查询。 假设&#xff0c;一…

云原生 API 网关链路追踪能力重磅上线

云原生API网关介绍 云原生 API 网关是腾讯云基于开源网关推出的一款高性能高可用的云原生 API 网关产品&#xff0c;作为云上流量入口&#xff0c;集成请求分发、API 管理、流量监控、访问限制等功能&#xff0c;是微服务架构和容器架构中的重要组件。 TSE 云原生 API 网关提…

蓝桥杯-常用STL(二)

常用STL &#x1f388;1.集合&#x1f388;2.set的基础使用&#x1f52d;2.1引入库&#x1f52d;2.2插入元素&#x1f52d;2.3删除元素&#x1f52d;2.4判断元素是否存在&#x1f52d;2.5遍历元素&#x1f52d;2.6清空 &#x1f388;3.set与结构体 &#x1f388;1.集合 &#x…

Maven dependency中的scope

Maven的一个哲学是惯例优于配置(Convention Over Configuration), Maven默认的依赖配置项中&#xff0c;scope的默认值是compile。 scope的分类 compile&#xff08;默认&#xff09; 含义&#xff1a; compile 是默认值&#xff0c;如果没有指定 scope 值&#xff0c;该元素…

【C语言刷题系列】喝汽水问题

文章目录 一、文章简介 1.先买再换 1.1 代码逻辑&#xff1a; 1.2 完整代码 1.3 运行结果 1.4 根据方法一总结优化 2.边买边换 2.1 代码逻辑&#xff1a; 2.2 完整代码 2.3 运行结果 一、文章简介 本文所述专栏——C语言经典编程问题 C语言刷题_倔强的石头106的博客…

C#代码添加脚本头

目录 前言 代码展示 前言 创建脚本的时候添加脚本的介绍 代码展示 using System.IO;/// <summary> /// 创建脚本自动添加头注 /// </summary> public class CommentFirst : UnityEditor.AssetModificationProcessor {/// <summary>/// 在资源创建生成.me…

15个好的在线课程细分市场(+真实MemberPress网站案例)

开发和销售在线课程可能是一种很好的谋生方式。借助市场上的课程插件&#xff0c;您甚至不必成为网页设计或开发方面的专家即可创建高端虚拟学习体验。 为了让您的在线课程有一个良好的开端&#xff0c;您需要对其定位进行一些思考。这可能感觉像是一个压倒性的决定&#xff0…

IDEA 配置和缓存目录 设置

IDEA系列产品&#xff0c;一般会在用户目录创建 配置 和 缓存 目录&#xff1a; %APPDATA%\JetBrains%LOCALAPPDATA%\JetBrains 一般会展示为&#xff1a; C:\Users\<username>\AppData\Roaming\JetBrainsC:\Users\<username>\AppData\Local\JetBrains 一般占用…

在 Windows 10 上使用 Visual Studio 2022 进行 C++ 桌面开发

工具下载链接&#xff1a;https://pan.quark.cn/s/c70b23901ccb 环境介绍 在今天的快速发展的软件开发行业中&#xff0c;选择合适的开发环境是非常关键的一步。对于C开发人员来说&#xff0c;Visual Studio 2022&#xff08;VS2022&#xff09;是一个强大的集成开发环境&…

手机云控制发电机组 有网络随时随地操控监控运行

GenCloudTM 发电机组云控系统简介 Ver2.0 目录 公司简介…… …………………………… ………………………………………………1概 述…… …………………………… ………………………………………………1主要功能及特点………… …………… ………… ………………………………

卡密社区SUP系统总控源码+主站分销系统功能源码

卡密社区SUP系统总控源码主站分销系统功能源码 跟以前的卡盟那种控制端差不多总控可以给别人开通&#xff0c;分销&#xff0c;主站&#xff0c;类似自己做系统商一样&#xff0c;自助发卡&#xff0c;卡密交易系统。 搭建环境Nginx1.22 mysql 5.7 php8.1 rids 7.2 安装方法…

深入理解 Golang 的 crypto/elliptic:椭圆曲线密码学的实践指南

深入理解 Golang 的 crypto/elliptic&#xff1a;椭圆曲线密码学的实践指南 引言crypto/elliptic 库概览基本使用教程高级应用案例性能与安全考量结论 引言 在当今数字时代&#xff0c;数据安全和加密技术成为了信息技术领域的重中之重。特别是在网络通信和数据存储领域&#…

unity3d的海盗王白银城演示

这是一个外网上的下载的海盗王unity3d制作的白银城演示场景。 地图只含有白银城区&#xff0c;没有野外和怪物。 当然也没有服务器端的。 我对灯光、摄像头、天空背景等做过调整&#xff0c;使它显示起来比较鲜丽。 它的模型和贴图是直接拿了海盗的&#xff0c;没有做过优化调整…

04 模块基础 隐藏模块

文章目录 PRE.内核中的内核模块&#xff1a;module 结构体Step-I. /proc/modules 信息隐藏Step-II. /sys/module/ 信息隐藏 当我们将一个 LKM 装载到内核模块中之后&#xff0c;用户尤其是服务器管理员可以使用 lsmod 命令 发现你在服务器上留下的rootkit arttnba3ubuntu:~/D…

【数据结构】单向链表实现 超详细

目录 一. 单链表的实现 1.准备工作及其注意事项 1.1 先创建三个文件 1.2 注意事项&#xff1a;帮助高效记忆和理解 2.链表的基本功能接口 2.0 创建一个 链表 2.1 链表的打印 3.链表的创建新节点接口 4.链表的节点插入功能接口 4.1 尾插接口 4.2 头插接口 4.3 指定位…

AI监控+智能充电桩系统如何缓解新能源汽车充电难问题

在新能源汽车行业的快速发展中&#xff0c;充电桩作为重要的配套设施&#xff0c;其建设和发展至关重要。随着新能源汽车销量的增长&#xff0c;补能需求也日益迫切&#xff0c;这为充电桩行业的发展提供了巨大的机遇。然而&#xff0c;充电桩行业在快速发展的同时&#xff0c;…

02-Java抽象工厂模式 ( Abstract Factory Pattern )

抽象工厂模式&#xff08;Abstract Factory Pattern&#xff09;是围绕一个超级工厂创建其他工厂 该超级工厂又称为其他工厂的工厂 在抽象工厂模式中&#xff0c;接口是负责创建一个相关对象的工厂&#xff0c;不需要显式指定它们的类 每个生成的工厂都能按照工厂模式提供对象 …
最新文章