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

news2024/9/28 21:21:16

  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.coloradmin.cn/o/1429243.html

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

相关文章

学习Android的第二天

目录 Android User Interface 用户界面 UI Android View与ViewGroup的概念 Android View android.view.View android.view.View XML 属性 android:id 属性 Android ViewGroup android.view.ViewGroup ViewGroup.LayoutParams ViewGroup.MarginLayoutParams ViewGr…

深度学习(12)--Mnist分类任务

一.Mnist分类任务流程详解 1.1.引入数据集 Mnist数据集是官方的数据集&#xff0c;比较特殊&#xff0c;可以直接通过%matplotlib inline自动下载&#xff0c;博主此处已经完成下载&#xff0c;从本地文件中引入数据集。 设置数据路径 from pathlib import Path# 设置数据路…

Pytest框架测试

Pytest 是什么? pytest 能够支持简单的单元测试和复杂的功能测试;pytest 可以结合 Requests 实现接口测试; 结合 Selenium、Appium 实现自动化功能测试;使用 pytest 结合 Allure 集成到 Jenkins 中可以实现持续集成。pytest 支持 315 种以上的插件;为什么要选择 Pytest 丰…

2024年第九届信号与图像处理国际会议(ICSIP 2024)

2024第九届信号与图像处理国际会议&#xff08;ICSIP 2024&#xff09;将于2024年7月12-14日在中国南京召开。ICSIP每年召开一次&#xff0c;在过去的七年中吸引了1200多名与会者&#xff0c;是展示信号和图像处理领域最新进展的领先国际会议之一。本次将汇集来自亚太国家、北美…

基于SpringBoot+Vue的师生疫情健康信息管理登记平台,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

python+PyQt5 左右声道测试

UI&#xff1a; 源代码&#xff1a; # -*- coding: utf-8 -*-# Form implementation generated from reading ui file MicrophoneWinFrm.ui # # Created by: PyQt5 UI code generator 5.15.2 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is …

Java正则表达式之Pattern和Matcher

目录 前言一、Pattern和Matcher的简单使用二、Pattern详解2.1 Pattern 常用方法2.1.1 compile(String regex)2.1.2 matches(String regex, CharSequence input)2.1.3 split(CharSequence input)2.1.4 pattern()2.1.5 matcher(CharSequence input) 三、Matcher详解3.1 Matcher 常…

​(三)hadoop之hive的搭建1

下载 访问官方网站https://hive.apache.org/ 点击downloads 点击Download a release now! 点击https://dlcdn.apache.org/hive/ 选择最新的稳定版 复制最新的url 在linux执行下载命令 wget https://dlcdn.apache.org/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz 2.解压…

账簿和明细账

目录 一. 账簿的意义和种类二. 明细账 \quad 一. 账簿的意义和种类 \quad 账簿是由一定格式、互有联系的账页组成&#xff0c;以审核无误的会计凭证为依据,用来序时地、分类地记录和反映各项经济业务的会计簿籍&#xff08;或称账本&#xff09;。设置和登记账簿是会计工作的重…

10个常考的前端手写题,你全都会吗?(上)

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热爱技术和分享&#xff0c;欢迎大家交流&#xff0c;一起学习进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 今天来分享一下10个常见的JavaScript手写功能。 目录 1.实现new 2.call、apply、…

C++:输入流/输出流

C流类库简介 C为了克服C语言中的scanf和printf存在的缺点。&#xff0c;使用cin/cout控制输入/输出。 cin&#xff1a;表示标准输入的istream类对象&#xff0c;cin从终端读入数据。cout&#xff1a;表示标准输出的ostream类对象&#xff0c;cout向终端写数据。cerr&#xff…

刘知远团队大模型技术与交叉应用L6-基于大模型文本理解和生成介绍

介绍 NLP的下游运用可以分为&#xff1a;NLU(理解)和NLG(生成) 信息检索&#xff1a;NLU 文本生成&#xff1a;NLG 机器问答&#xff1a;NLUNLG 大模型在信息检索 大模型在机器问答 大模型在文本生成 信息检索-Information Retrieval (IR) 背景 谷歌搜索引擎目前同时集成了…

水表表盘读数识别新体验,带你进入华为云ModelArts算法套件的世界

前言 数字时代&#xff0c;数字化服务已经发展到各行各业&#xff0c;我们的生活中也随处可见。 数字化服务的便捷了我们的衣食住行的方方面面&#xff0c;除了我们日常化的出行、饮食、购物&#xff0c;其实住方面也已有了很深的发展。 水电燃气这三项和我们生活息息相关的…

YOLO-World: Real-Time Open-Vocabulary Object Detection

文章目录 1. Introduction2. Experiments2.1 Implementation Details2.2 Pre-training2.3 Ablation Experiments2.3.1 预训练数据2.3.2 对RepVL-PAN的消融研究2.3.3 文本编码器 2.4 Fine-tuning YOLO-World2.5 Open-Vocabulary Instance Segmentation2.6 Visualizations Refere…

R语言分析任务:

有需要实验报告的可CSDN 主页个人私信 《大数据统计分析软件&#xff08;R语言&#xff09;》 实 验 报 告 指导教师&#xff1a; 专 业&#xff1a; 班 级&#xff1a; 姓 名&#xff1a; 学 …

Multisim14.0仿真(四十三)LM311应用

一、LM311简介&#xff1a; lm311是一款高灵活性的电压比较器&#xff0c;能工作于5V-30V单个电源或正负15V分离电源。 二、LM311主要特性&#xff1a; ★ 快速响应时间&#xff1a;165 ns。 ★ 选通能力。 ★ 最大输入偏置电流&#xff1a;300nA。 ★ 最大输入偏置电流&#…

8868体育助力意甲尤文图斯俱乐部 帮助球队签订新合同

意甲的尤文图斯俱乐部是8868合作体育球队之一&#xff0c;根据意大利媒体的消息&#xff0c;尤文图斯已经决定和费德里科-基耶萨续约&#xff0c;这名球员已经开始思考他的将来了。 费德里科-基耶萨今年26岁&#xff0c;他和尤文图斯的合约到2025年6月30号就结束了。他知道很多…

大数据分析|设计大数据分析的三个阶段

文献来源&#xff1a;Saggi M K, Jain S. A survey towards an integration of big data analytics to big insights for value-creation[J]. Information Processing & Management, 2018, 54(5): 758-790. 下载链接&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1…

flask基于django大数据的证券股票分析系统python可视化大屏

证券分析系统采用B/S架构&#xff0c;数据库是MySQL。网站的搭建与开发采用了先进的Python进行编写&#xff0c;使用了Django框架。该系统从两个对象&#xff1a;由管理员和用户来对系统进行设计构建。主要功能包括&#xff1a;个人信息修改&#xff0c;对股票信息、股票买入、…

[Linux 进程(六)] 写时拷贝 - 进程终止

文章目录 1、写时拷贝2、进程终止2.1 进程退出场景2.1.1 退出码2.1.2 错误码错误码 vs 退出码2.1.3 代码异常终止引入 2.2 进程常见退出方法2.2.1 exit函数2.2.2 _exit函数 本片我们主要来讲进程控制&#xff0c;讲之前我们先把写时拷贝理清&#xff0c;然后再开始讲进程控制。…