从设计到代码(第 3 天)

news/2024/4/20 11:19:32/文章来源:https://www.cnblogs.com/amboke/p/16633233.html

从设计到代码(第 3 天)

我最近正在开发一门课程,名为 三周内完成三个网页设计 .最初它是一个为期 3 周的研讨会材料,旨在成为一个包含许多实践的动手密集型研讨会。主要目标是教没有太多开发经验的人使用 HTML 和 CSS 来重现专业的设计模型——这就是为什么它被称为从设计到代码。

而且我发现即使是工作室中最简单的项目也太长了,所以我决定将它分成三个并形成一个系列。如果您想从一开始就学习该主题,请跟随。

这是 4 部分教程中的第 2 部分,如果您错过了,请查看 第 1 天 和 第 2 天 .

实施英雄横幅

接下来,我们可以看看英雄横幅部分。几乎每个网站都有这么宽敞的版块,通常有大字体、醒目的图片和一个按钮(Call To Action)来引导用户采取行动(比如,点击它)。

根据模型,我们可以将整个区域分为左右两部分。标题和描述性文字在左侧,后面是号召性用语按钮。右侧稍微复杂一些,包含一张图片和一些位于图片顶部的描述和评级。

如上所述,让我们先编写 HTML 内容。值得注意的是,在编写 HTML 时,我们必须假设页面无需任何 CSS 即可使用。标题应该是可读的,超链接应该是可点击的,并且可以将用户导航到他们需要的新地址等。

Hero Section

在这里,您可以使用 div 或者 部分 作为该部分的容器标签。我通常更喜欢 部分 作为内容的容器,以及 div 作为辅助标签。

另外,不要使用 div 除非必要。但是,通常,两者在许多情况下可以互换使用。

在任何样式之前,这部分看起来像这样:

Hero Section without CSS

使两者 块级 元素 简短的 媒体 横向排列,我们应该使用什么方法?没错,像导航栏一样,我们可以设置容器 英雄节 成为一个 柔性 容器:

 .英雄节{  宽度:80%;  保证金:2rem auto;  显示:弯曲;  对齐项目:居中;  }

横向排列很好,但两部分的宽度似乎不均匀。图片部分占用较多空间,文字向左推。我们需要它们是半分布的:

这时,我们需要使用 弹性:1 容器中两个元素的规则并设置宽度 100% 为图像而不是默认宽度,以便图像将填充其容器的可用宽度( .game-cover ):

 .hero-section>section {  弹性:1;  } .game-cover img {  宽度:100%;  }

注意这里有一个新的 CSS 语法: > .此符号表示所选的直接子节点 .hero-section .如果没有这个直接操作符, .hero-section 部分 会选择所有 部分 里面 .hero-section ,不管它有多深。

Evenly distributed

弹性:1 这里也需要一些额外的解释。这是一个典型的 CSS 缩写,它的完整形式是:

 弹性增长:1;  弹性收缩:1;  弹性基础:0%;

弹性成长 是增长因子,即如何将剩余空间分配给弹性容器中的元素。仅当所有元素本身都小于容器大小时才有效。 弹性收缩 指收缩系数,即当所有flex元素的宽度超过容器的宽度时,每个元素应该按什么比例收缩。 弹性基础 指弹性元素的默认大小。

弹性布局

我们可以通过一个具体的例子来说明这些属性之间的关系。

Flex demo HTML

一开始,我们设置 容器 作为一个弹性容器,以及它们的子节点 盒子 是自动的 柔性 元素。但是由于每个单词的长度不一样,所以四个框的排列是这样的:

Flex with default settings

 。容器 {  显示:弯曲;  对齐项目:居中;  间隙:1rem;  } 。盒子 {}

这是因为,默认情况下,flex 元素的 CSS 设置为 弹性:0 , IE:

 弹性增长:0;  弹性收缩:1;  弹性基础:0%;

我们设置 弹性成长 在所有 div 中 盒子 class 为 1,这意味着如果容器有足够的空间,它们具有相同的增长因子:

 。盒子 {  弹性增长:1;  弹性收缩:1;  弹性基础:0%;  }

此时,它们将填满整个容器并平均分配空间:

Flex:1 for items — distributed evenly

如果我们为某些元素设置不同的增长因子:

 .box:nth-child(1) {  背景颜色:浅绿色;  弹性增长:2;  } .box:nth-child(4) {  弹性增长:2;  背景颜色:浅绿色;  }

那么当容器空间足够的时候,第一个和第四个元素会比其他元素增长得更快(因为它们有很大的 弹性成长 部分)。

flex-grow

弹性收缩 弹性成长 .当 flex 容器的宽度小于所有 flex 项的宽度之和时, 弹性收缩 定义每个元素收缩的比率。

 。盒子 {  弹性增长:1;  弹性收缩:1;  弹性基础:50%;  } .box:nth-child(2) {  背景颜色:浅绿色;  弹性收缩:2;  } .box:nth-child(3) {  背景颜色:浅绿色;  弹性收缩:2;  }

例如,在本例中,我们设置 弹性基础 到 50%,每个 flex 元素从父元素的 50% 收缩或拉伸。因为容器中有四个元素,总长度超过了容器,所以 弹性收缩 生效,结果是第二个和第三个元素比其他两个收缩得更快,因此更小:

flex-shrink

打磨主页横幅

好吧,我们的横幅现在有一半的布局,然后我们需要做一些排版。一般来说,我们可以通过不同的字体、颜色等视觉元素来强调一些元素,使主题更加醒目,页面更加平衡。

 h1 {  字体大小:48px;  字体粗细:粗体;  } . 简介 p {  字体粗细:较轻;  边距:16px 0;  }

为了自定义按钮和导航栏,我们使用颜色选择器从模型中获取紫色值: #4A43EB .

 .button-secondary {  外观:无;  填充:8px 16px;  边框半径:16px;  边框:无;  背景颜色:#4A43EB;  白颜色;  }

我们用 外观:无 在这里,重置浏览器的默认样式并为其添加圆角、背景颜色和字体颜色。

The left side of Hero Section

对于横幅的右侧,我们注意到评级内容覆盖在模型中的图像上。这种效果 级联 内容需要一点解释。

浏览器在渲染HTML的时候,是按顺序排列元素的,并没有叠加(毕竟叠加就是遮挡,也就是有些内容是看不到的)。如果我们需要一些元素 跳出来 的排列过程,并释放原来属于它的位置,然后我们需要设置元素的 位置 绝对 .

这样,元素就会跳出正常的文档流,并将定位留给开发人员。这时候,我们可以使用 最佳 , 剩下 , 底部 正确的 控制元素的绝对定位,默认坐标原点为屏幕左上角。

但大多数时候,我们并不想把屏幕的左上角作为原点,而是作为某个元素。在 CSS 中,我们可以设置 位置 一个元素的 相对的 以便其子节点的原点位于左上角(而不是屏幕的左上角)。

在这个例子中,我们想使用 。游戏结束 作为基线,然后将描述文本放在其顶部:

 .game-cover {  位置:相对;  } .media .title {  位置:绝对;  底部:16px;  左:16px; 白颜色;  字体大小:14px;  字体粗细:较轻;  } .media span.rating {  左边距:8px;  }

最后,我们对图像的边角进行了一点调整,使实现更接近模型:

 .game-cover img {  边框半径:32px;  }

这会产生一个带有圆角的图像和一个半径为 32 像素的圆:

Final Result of Hero Section

恭喜,我们已经完成了页面的第二部分。在这里我们了解到了一些细节 柔性 布局来实现元素在 flex 容器中的均匀分布,我们还学会了使用绝对定位( 位置:绝对 ) 和相对定位 ( 位置:相对 ) 使元素分层,使其在视觉上更令人愉悦。

这就是我们第 3 天的全部内容。接下来,我们将完成整个设计,看看我们如何发布该网站,以便您可以与您的朋友分享结果。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/1328/43012817

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

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

相关文章

力扣507(java)-完美数(简单)

题目: 对于一个 正整数,如果它和除了它自身以外的所有 正因子 之和相等,我们称它为 「完美数」。 给定一个 整数 n, 如果是完美数,返回 true;否则返回 false。示例 1: 输入:num = 28输出:true解释:28 = 1 + 2 + 4 + 7 + 141, 2, 4, 7和 14 是 28 的所有正因子。示例 …

仅Intel电脑可用:设计2D/3D文档绘图Autodesk AutoCAD 2021

Autodesk AutoCAD 2021是Mac上的二维和三维CAD设计软件,用于产品衍生式设计,创建设计方案,三维模型参数化,建模部件组织,创建制作清晰工程图,设计自动化配置等,AutoCAD 2021增强了针对草图的命令设计,简化流程,改进各种性能,转化探索更强大的设计。​编辑切换为居中 …

Echarts与ajax数据的动态交互

初学Echarts,Echarts的官网示例中配置项的数据需要用到js数组来传递数据,所以当我们从后端查询到数据后,往往需要通过ajax来进行数据交互。 这是官方示例的配置项。<script type="text/javascript">// 基于准备好的dom,初始化echarts实例var myChart = ech…

Openwrt 纯ipv6环境管理和上网

防火墙打开远程管理端口 添加端口如22或者使用ipv6端口转发到ipv4 使用socat opkg install socat图形化界面: drophair / luci-app-socatg wget -P /tmp https://github.com/big-tooth/luci-app-socatg/releases/download/v1.1/luci-app-socatg_1.1-1_all.ipk opkg install /tm…

c++ :虚拟机centos7+vscode

c++ :虚拟机centos7+vscodegcc、g++、make查看是否安装成功 $ gcc --version $ g++ --version $ make --version哪个没有,就yum install gcc-c++/yum install gcc/yum install make yum报错 "Failed to connect to 2001:da8:8000:6023::230: 网络不可达":参考链接…

最大正方形

问题:在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。 输入:matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1"…

图解AspNetCore和Furion(1):应用启动

一、和AspNetCore5相比,从6开始,将Program和Startup类合并,直接在入口类中启动服务和中间件。同时,项目可以启动miniApi,直接在Program中设置路由和控制器。实际项目中,还是推荐使用控制器的方式。 二、Furion定义了静态类Serve,对AspNetCore的启动类进行了封装,同时支…

leetcode-172. 阶乘后的零

172. 阶乘后的零 图床:blogimg/刷题记录/leetcode/172/ 刷题代码汇总:https://www.cnblogs.com/geaming/p/16428234.html 题目思路 n!中有几个0与[1,n]中出现多少个5的因数有关。例如7! = 1234567出现了1次5,故最后末尾会出现1个0。26!中出现了5,10,15,20,25其中5的个数为1+…

java内部类

一、基本介绍 一个类的内部又完整的嵌套了另一个类结构。被嵌套的类称为内部类(inner class),嵌套其他类的类称为外部类(outer class)。是我们类的第五大成员 类的五大成员:属性、方法、构造器、代码块、内部类 内部类最大的特点就是可以直接访问私有属性,并且可以体现类…

redis主从数据同步原理

what:redis高可用:1、数据尽量不丢失;2、尽可能的提供服务;栗子:AOF 和 RDB 保证了数据持久化尽量不丢失;主从复制就是增加副本,一份数据保存到多个实例上。即使有一个实例宕机,其他实例依然可以持续服务;主从:复制——为单向的,即:只能从主复制到从;读写指责——…

Linux驱动开发十六.input系统——2.input_event

我们上一章完成了input子系统的设备构成,并且在用户空间通过hexdump命令拿到了一堆不知道是什么的信息。今天我们就要借助input_event这个结构体来了解内核怎么通过那个结构体了解输入事件。 可能有心人已经发现了,上一章我们在加载完模块以后在/dev/input路径下生成了一个新…

(0828)【vivado版本-对仿真工具版本要求】

(1)https://blog.csdn.net/Alonger1988/article/details/120506385 vivado,vsim版本兼容问题 (2)版本匹配:http://dengkanwen.com/567.html

Ingress

为什么需要Ingress Service是基于四层TCP和UDP协议转发的,而Ingress可以基于七层的HTTP和HTTPS协议转发,可以通过域名和路径做到更细粒度的划分,如下图所示。 图1 Ingress-ServiceIngress工作机制 要想使用Ingress功能,必须在Kubernetes集群上安装Ingress Controller。Ingr…

Rayman Mini for Mac(雷曼迷你跑酷游戏)中文

Rayman Mini for Mac是一款运行在MacOS平台上的经典跑酷类游戏,玩家在Rayman Mini可以看到经典的传统角色,与玩家一起在世界中探险,还有超多全新的角色出现。游戏包含动作横向跑酷和剧情解谜探索为一体,呈现了一个别样的世界。 详情:Rayman Mini for Mac(雷曼迷你游戏) 游…

Java09-继承,抽象类

继承:就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接 访问父类中的非私有的属性和行为。父类中的方法,被它的子类们重写,子类各自的实现都不尽相同。那么父类的方法声明和方法主体,只有声明还有意义,而方法主体则没有存在的意…

IDEA配置方法注释

之前配置过,但是忘记了,再次记录下. IDEA版本(IntelliJ IDEA 2019.3.1 x64)类注释如下位置配置,创建类时自动生成注释.点击查看代码 /** * ${NAME} * *@author ${USER} *@version 1.0 *${DATE} ${TIME} **/效果如下:方法注释 如下位置建立tempalte group.1.新增add,这里add可以…

程序设计大赛

一开始可以分清楚板块1.背景2.基本功能介绍 + 难点功能 可以里面的内容串起来3.重难点+亮点 分清楚,难点,亮点 我们答辩时间是10分钟,背景大概是1分半,首先是整个系统爬取数据,经行一个总的说明,构建情况然后我是通过一首诗来进行串的,从知人论事开始说起,知人就…

ansible 001 ansible介绍 原理

ansible 自动化运维 ansible 部署应用程序 (在操作系统层面之上) 系统初始化过程 主机名,yun源,网络,服务,时间同步,内核参数 (可以在pxe这里完成) ansible可以方便100多台服务器来变更,不至于pxe重新安装 PXE 预启动的执行环境 PXE (Pre-boot Execution Enviro…

使用小乌龟来更新代码-02

小乌龟更新代码使用的是pull 右击项目文件,TortoiseGit--->pull来更新代码,从远程仓库拉取最新的代码,拉取后。 点击OK 然后点击Pulled Diff,点击Show log看看当前版本和最新版本相比哪里有修改,是否有冲突: 例如,我把一个压缩文件给删除了,还有修改了Default里的一…

【Prometheus+Grafana系列】监控MySQL服务

前言 前面的一篇文章已经介绍了 docker-compose 搭建 Prometheus + Grafana 服务。当时实现了监控服务器指标数据,是通过 node_exporter。Prometheus 还可用来监控很多服务,比如常见的 MySQL。本文就介绍如何通过 mysqld_exporter 来监控 MySQL 指标。 下载安装包 cd /opt w…