本文还有配套的精品资源,点击获取
简介:《10天学会div+css》是一本面向初学者的网页设计教程,通过易懂的语言和实例教学,快速传授基于web标准的div和css网页布局与样式设计技术。教程内容包括HTML和CSS基础、CSS盒模型、浮动与定位布局、响应式设计、Flexbox和Grid布局、CSS预处理器及优化最佳实践。该课程旨在帮助学习者掌握现代网页设计规范,并为深入学习前端开发奠定基础。
在本章中,我们将步入前端开发的基础领域,即div与CSS的结合使用。开始我们的旅程之前,你需要了解一点:CSS(层叠样式表)是控制网页布局和样式的语言,而div是HTML中的一个元素,用于将网页分割成独立的部分。理解这两者如何协同工作是构建良好结构和外观的网页的第一步。
CSS规则由选择器和声明组成。选择器指向HTML文档中的元素,而声明则指定了选择器的属性和值。例如:
h1 {
color: blue;
font-size: 24px;
}
这条规则为所有 <h1> 元素设置了文本颜色为蓝色以及字体大小为24像素。
<div> 标签常用于将内容分组,这使得我们可以对它们应用特定的样式。将CSS应用于div的常见方法是使用类选择器:
<div class="my-class">这是内容</div>
.my-class {
background-color: #f0f0f0;
padding: 10px;
}
在这个例子中,所有具有 my-class 类的div元素都会有灰色背景和10像素的内边距。
理解了基础后,你就可以开始更复杂的布局和样式设计了。在后续章节中,我们将深入探讨HTML结构、CSS选择器、盒模型等概念,并介绍现代布局技术,如Flexbox和Grid。让我们继续前行,构建出更加丰富多彩的网页。
HTML文档的基础结构对于理解和使用HTML至关重要。一个标准的HTML文档以 <!DOCTYPE html> 声明开始,这一行告诉浏览器该文档是HTML5文档。紧接着是 <html> 元素,所有其他HTML元素都包裹在它的内部。 <html> 元素包含两个主要部分: <head> 和 <body> 。
<head> 部分通常包含文档的元数据信息,例如字符集声明 <meta charset="UTF-8"> 、页面标题 <title> 以及链接到外部资源的 <link> 和 <script> 标签。 <body> 部分则包含了网页的可见内容,包括标题、段落、图片、链接、列表、表格和表单等元素。
<!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>
</body>
</html>
在上述代码中, <html> 元素包含了整个文档的内容。 <head> 内定义了文档的元数据,而 <body> 内则是网页的正文部分。
2.1.2 常用的HTML头部标签头部标签主要包含在 <head> 部分,并且对搜索引擎优化(SEO)和文档结构的可读性有着重要的影响。如 <title> 标签定义了网页标题,显示在浏览器标签上,并且是搜索引擎首先查找的元素。 <meta> 标签提供了关于HTML文档的元信息,如字符集、页面描述、关键字、作者等。 <link> 标签用于链接外部资源,例如CSS文件。
<head>
<meta charset="UTF-8">
<meta name="description" content="A brief description of the page">
<meta name="keywords" content="HTML, head, tags">
<meta name="author" content="John Doe">
<link rel="stylesheet" href="styles.css">
</head>
2.2 HTML的语义化标签应用 2.2.1 语义化标签的定义与重要性语义化标签是HTML5中引入的一组新标签,这些标签为网页内容提供了结构化和语义化的含义,例如 <article> , <section> , <aside> , <header> , <footer> 等。它们不仅帮助开发者更好地组织内容,还能够提高网页的可访问性和可维护性。
<article>
<header>
<h1>Article Title</h1>
</header>
<section>
<p>This is the first section of the article.</p>
</section>
<section>
<p>This is the second section of the article.</p>
</section>
<footer>
<p>Article Footer</p>
</footer>
</article>
语义化标签有助于无障碍访问,因为屏幕阅读器和其他辅助技术能够更容易地理解页面的结构。此外,搜索引擎也更有可能正确地索引语义化标签中的内容。
2.2.2 常见语义化标签的使用场景在HTML5中,推荐根据内容的性质使用合适的语义化标签。例如,使用 <article> 来标记一篇独立的文章,使用 <section> 来表示文档中的一个章节, <aside> 用于侧边栏内容, <header> 和 <footer> 分别用于页面或章节的头部和底部。
<body>
<header>
<h1>Welcome to My Website</h1>
<nav>
<ul>
<li><a href="#home">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</nav>
</header>
<article>
<section>
<h2>Introduction</h2>
<p>This is the introduction of the article.</p>
</section>
<section>
<h2>Conclusion</h2>
<p>This is the conclusion of the article.</p>
</section>
</article>
<footer>
<p>© 2023 My Website</p>
</footer>
</body>
表格可以用于展示数据,而流程图则可以用于描述复杂的过程和步骤。Mermaid格式的流程图允许开发者使用文本描述来创建图表,从而避免了图形编辑工具的使用。
graph TD;
A[Start] --> B{Is it awesome?};
B -->|Yes| C[Yes];
B -->|No| D[No];
C --> E[End];
D --> E[End];
在使用语义化标签时,应考虑到页面的结构,以及如何将内容分块以便于理解。使用合适的标签可以增强HTML文档的可读性和易用性。
2.3 HTML表单的创建与应用 2.3.1 表单标签的基本使用HTML表单是用于收集用户输入数据的HTML元素集合,通常用于创建搜索栏、登录表单、注册表单等交互式内容。一个表单的基本结构由 <form> 标签定义,它包含一个或多个输入控件,如文本框、复选框、单选按钮和提交按钮。
<form action="/submit-form" method="post">
<label for="name">Name:</label>
<input type="text" id="name" name="name"><br>
<label for="email">Email:</label>
<input type="email" id="email" name="email"><br>
<input type="submit" value="Submit">
</form>
在上述代码中, <form> 标签的 action 属性定义了表单提交后数据发送到的服务器地址,而 method 属性定义了表单数据的发送方式(通常是 GET 或 POST )。 <input> 元素用于创建不同的输入控件。 <label> 元素与相应的 <input> 元素关联,提高表单的可用性。
2.3.2 表单数据的验证方法表单验证是一种检查用户输入数据是否符合要求的过程。客户端验证在用户提交表单之前进行,而服务器端验证在表单提交到服务器后进行。客户端验证可以使用HTML5内置的验证属性来实现,如 required , pattern , min , max 等。
<form action="/submit-form" method="post">
<label for="username">Username:</label>
<input type="text" id="username" name="username" required pattern="^[a-zA-Z0-9_]{3,}$">
<label for="password">Password:</label>
<input type="password" id="password" name="password" required minlength="6" maxlength="12">
<input type="submit" value="Submit">
</form>
在上述表单中,用户名字段要求用户至少输入3个字母或数字字符,并且只能包含字母、数字和下划线。密码字段则是必须输入的,并且长度限制在6到12个字符之间。
服务器端验证是必须的,因为客户端验证可以通过禁用JavaScript或绕过页面直接发送数据到服务器,从而被绕过。服务器端验证可以使用PHP、Python、Node.js等服务器端语言进行。
CSS选择器是CSS规则的基础部分,用来指定哪些HTML元素应该被规则影响。基本选择器主要包括元素选择器、类选择器、ID选择器和通配符选择器。
元素选择器针对所有特定类型的HTML元素。例如,要选择页面上所有的 <p> 元素,可以使用如下CSS规则:
p {
color: #333;
}
类选择器通过元素的类属性选择元素。类选择器前加上一个点( . ),例如,要选择所有具有 class="highlight" 的元素,可以这样写:
.highlight {
background-color: yellow;
}
ID选择器通过元素的ID属性选择单个特定的元素。ID选择器前加上一个井号( # ),如下选择ID为 main-header 的元素:
#main-header {
color: red;
}
通配符选择器表示所有元素。这在CSS规则中非常有用,因为它允许你设置所有元素的默认样式。它是一个星号( * ):
* {
margin: 0;
padding: 0;
}
3.1.2 复合选择器和伪类选择器的应用复合选择器由两个或多个基础选择器结合使用,用以选择更特定的元素组合。它包括类选择器、元素选择器以及ID选择器的组合。
举例来说,如果你想选择所有位于类名为 box 的 <div> 元素内的 <p> 元素,可以这样写:
div.box p {
font-size: 14px;
}
伪类选择器用于定义元素的特殊状态,例如 :hover 表示鼠标悬停状态。如下的规则将使得鼠标悬停在任何 <a> 元素上时,链接文本变为蓝色:
a:hover {
color: blue;
}
伪元素选择器则允许我们选择元素的特定部分,比如 ::before 和 ::after 伪元素可以在元素内容之前和之后插入新内容。
3.1.3 选择器优先级规则当多个CSS规则可以应用于同一个元素时,浏览器使用一个叫做“层叠”的算法来决定使用哪个规则,这个算法中包括选择器的优先级(也称为“特异性”)。
一般来讲,内联样式 > ID选择器 > 类选择器、伪类和属性选择器 > 元素选择器和伪元素选择器。以下是按照优先级从高到低排列的示例:
#main-container > div.highlight > p:first-child { }
#main-container { }
p.highlight { }
p { }
* { }
当优先级相同时,最后出现的规则将被应用。
CSS属性定义了元素的各种样式效果,比如颜色、字体、边框等。以下是一些常用的CSS属性:
color : 定义元素的文本颜色。 font-size : 设置文本的字体大小。 background-color : 定义元素的背景颜色。 border : 设置元素的边框样式、宽度和颜色。 margin 和 padding : 分别定义元素的外边距和内边距。下面是一个简单的CSS规则,展示了如何使用上述一些属性:
p {
color: #000;
font-size: 16px;
background-color: #fff;
border: 1px solid #000;
margin: 20px;
padding: 10px;
}
3.2.2 属性值的选择和应用技巧每个CSS属性都可以接受特定类型的值,了解这些值的类型对于写出有效和可预测的CSS至关重要。
例如, color 属性可以接受如 red 、 #ff0000 、 rgb(255, 0, 0) 这样的颜色值。 font-size 属性可以接受绝对大小如 16px 、相对大小如 large 或百分比值。
在选择属性值时,我们应该考虑代码的可读性和可维护性。例如,使用相对大小单位如 em 或 rem ,可以提高文本样式的灵活性:
h1 {
font-size: 2rem;
}
p {
font-size: 1em;
}
此外,使用预定义的颜色值可以避免为每个元素指定硬编码的颜色值,使得在需要修改时更容易进行全局更改。例如,使用Sass或LESS变量来定义全局颜色:
$primary-color: #448aff;
h1 {
color: $primary-color;
}
层叠是CSS中用来解决冲突的机制,它决定了当多个CSS规则被应用到同一个元素时,哪些规则会被采用。优先级规则是层叠的核心部分,它基于选择器的特异性。
继承是CSS的另一个重要机制,某些CSS属性会自动继承父元素的值。比如 color 和 font-family 属性会从父元素继承到子元素,但 background-color 和 border 属性则不会。
3.3.2 继承性对样式的影响继承可以使得一些属性在没有明确设置时,依然能够继承父元素的样式,这可以极大简化CSS代码。然而,继承也可能引起意外的样式效果,特别是在全局样式设计时需要注意。
为了管理继承,你可以使用CSS的 inherit 、 initial 和 unset 关键字。比如,如果你想要阻止某个元素继承其父元素的 color 和 font-family 属性,可以这样设置:
h1 {
color: inherit;
font-family: initial;
}
同时,了解哪些属性是可以继承的,哪些是不可以继承的,可以让你写出更加符合预期的CSS代码。
比如,列表相关的属性如 list-style 、 list-style-type 、 list-style-image 都是可继承的,而 text-align 属性则是不可继承的。
在CSS中,盒模型(Box Model)是用于布局网页和交互元素的基础。所有HTML元素都可以被视为一个盒子,每个盒子由四个部分构成:内容(Content)、内边距(Padding)、边框(Border)和外边距(Margin)。理解这些组成部分以及它们如何影响布局是进行网页设计的关键。
内容区域是盒子的可见部分,包含文本、图片等元素。内边距位于内容区域的周围,提供了空间分隔内容和边框。边框是围绕内边距和内容的线条,可以有多种样式。外边距在边框外围,用于控制盒子之间的空间。CSS的盒模型概念,使得开发者能够精确控制元素的尺寸和布局。
4.1.2 盒模型各部分的尺寸计算内容(Content) :这是盒模型中最重要的部分,它包含着元素的文本、图片等实际内容。内容的大小由 width 和 height 属性直接控制。
内边距(Padding) :位于内容区域和边框之间的空白区域。内边距的大小由 padding 属性控制,可以设置一个值或者为每个边设置不同的值。
边框(Border) :边框位于内边距外,由 border-width 、 border-style 和 border-color 等属性定义。边框可以是实线、虚线、点线等样式。
外边距(Margin) :位于边框的外围,用于控制元素之间的间距。外边距的大小由 margin 属性控制,同样可以设置一个值或者为每个边设置不同的值。
在盒模型中,元素的实际占用宽度和高度是内容宽度和高度加上内边距和边框的总和。这可以通过 box-sizing 属性设置为 border-box 来让开发者直接通过 width 和 height 控制整个盒子的宽度和高度,而不包括外边距。
* {
box-sizing: border-box;
}
这段CSS代码将页面中所有元素的盒模型设置为 border-box ,使得开发者更容易控制元素尺寸。
4.1.3 盒模型的视觉影响每个HTML元素都包含在这个模型中,并且遵循这些规则,以确定其在页面上的最终布局。例如,如果一个元素的 width 设置为200px, padding 为20px,那么实际显示的宽度将是240px(200px内容宽度 + 40px左右内边距)。外边距不会影响元素的总尺寸,但会影响元素与其邻居之间的空间。
了解并应用这些概念对于创建精确的布局非常关键。下面是一个简单的示例代码,展示了如何设置一个盒子的各部分属性:
.box {
width: 200px;
padding: 20px;
border: 5px solid #ccc;
margin: 20px;
}
在上述代码中, box 类的元素在视觉上实际占用的宽度和高度会比 200px 的 width 要大,这就是盒模型所带来的视觉影响。
盒模型不仅影响单个元素的布局,还对整体页面布局有着深远的影响。在复杂布局中,正确理解和应用盒模型变得尤为重要。例如,在设计两列或三列布局时,必须考虑到每个元素的边距、内边距和边框,以确保布局的整洁和一致性。
在CSS中,还可以通过 box-sizing 属性来改变盒模型的默认行为。默认情况下, box-sizing 属性值为 content-box ,这意味着 width 和 height 只包括内容区域,不包括内边距和边框。将 box-sizing 设置为 border-box 会改变这一行为,使 width 和 height 属性包括内容、内边距和边框的总尺寸。
4.2.2 实际布局案例分析在实际的网页设计中,盒模型的原理被广泛应用于各种布局技术中。例如,在创建响应式设计时,盒模型允许设计师在不同屏幕尺寸下精确控制元素的宽度,确保布局的适应性。
在创建导航栏时,盒模型使得导航链接之间有适当的间距,而不会影响布局的整体宽度。设置外边距、内边距和边框允许设计师在视觉上区分每个链接,同时保持整体的一致性。
.nav-item {
float: left;
margin-right: 20px;
padding: 10px 15px;
border: 1px solid #ccc;
}
在上述代码中,每个导航项都使用了左浮动,以便它们并排显示。通过设置 margin-right 、 padding 和 border ,导航项之间以及与周围内容的视觉关系得到了定义,同时整体导航栏宽度得到了控制。
为了更加深入理解盒模型在实际布局中的应用,我们可以创建一个简单的页面布局案例。例如,一个包含头部、侧边栏、内容区域和页脚的基本页面结构。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Box Model Example</title>
<style>
.container {
display: flex;
justify-content: space-between;
}
.header, .footer {
background-color: #f1f1f1;
padding: 10px;
}
.sidebar {
width: 20%;
background-color: #ddd;
padding: 10px;
}
.content {
width: 75%;
background-color: #f9f9f9;
padding: 10px;
}
</style>
</head>
<body>
<div class="container">
<div class="header">
<h2>Header</h2>
</div>
<div class="sidebar">
<p>Sidebar content</p>
</div>
<div class="content">
<p>Main content area</p>
</div>
<div class="footer">
<p>Footer</p>
</div>
</div>
</body>
</html>
在这个布局案例中,我们使用了flexbox布局来创建一个带有头部、侧边栏、内容区域和页脚的页面。每个部分都有适当的内边距和背景色,以便清晰地展示盒模型在实践中的应用效果。通过这个案例,我们可以看到如何通过盒模型精确控制布局中各个部分的位置和大小。
理解盒模型的关键在于如何合理地使用内边距、边框和外边距来达到设计目标。当设计响应式网站时,利用盒模型可以简化布局的创建和调整过程。设计者可以灵活控制元素尺寸,并使设计在不同设备和屏幕尺寸上都能保持良好的布局和视觉效果。
浮动布局是CSS中一种非常重要的布局方式,它可以帮助我们实现文字环绕图片、创建多列布局等效果。在开始深入了解浮动布局技术之前,我们需要先理解什么是浮动以及它的原理和特点。
浮动属性在CSS中是使用 float 属性来实现的。当一个元素被设置为浮动,它会脱离常规的文档流,并向左或向右移动,直到它的外边缘碰到包含框或另一个浮动元素的边缘。浮动元素仍然保持其块级特性,这意味着它的宽度默认会扩展到其父元素的100%。
常见的 float 属性值包括: - left :元素向左浮动 - right :元素向右浮动 - none :元素不浮动(默认值)
5.1.2 浮动布局的优势与局限浮动布局的主要优势在于它的灵活性和对旧版浏览器的兼容性。浮动布局能让我们轻松实现复杂布局,特别是当需要文字环绕图片时,非常方便。但同时,浮动布局也存在一些局限性:
清除浮动的复杂性:浮动元素可能导致父元素高度坍塌,解决这一问题需要使用额外的清除浮动方法。 布局的不稳定性:浮动布局可能会受到后续浮动元素的影响,导致布局发生变化。 嵌套元素的复杂性:当使用多层嵌套的浮动元素时,布局管理变得更加复杂。由于浮动元素会影响到文档流,所以在使用浮动布局时,我们需要特别注意父元素的高度问题。一个常用的方法是使用 clear 属性来清除浮动。另一个方法是创建一个清除浮动的元素,通常是一个空的div元素,并通过CSS设置其样式:
<div style="clear:both;"></div>
除此之外,还可以使用伪元素方法来清除浮动,示例如下:
.container::after {
content: "";
display: block;
clear: both;
}
5.2.2 浮动布局的常见布局模式浮动布局可以实现多种常见的布局模式,例如两列布局和三列布局。在两列布局中,一个元素浮动到左侧,另一个元素浮动到右侧。在三列布局中,通常有一个中间列,其宽度被设置为100%,而两侧的列则浮动在中间列的两侧。以下是三列布局的CSS代码示例:
.left, .right {
width: 100px;
float: left/right;
}
.middle {
width: auto;
float: none;
}
请注意,浮动布局虽然强大,但现代CSS布局技术,如Flexbox和CSS Grid,提供了更为强大和灵活的布局解决方案。浮动布局更多被用于向后兼容或者特定的布局需求中。
浮动布局技术是前端开发者必须掌握的技能之一,因为即使在今天,我们也经常需要在项目中使用它来实现特定的布局效果。理解和掌握浮动布局的原理与实践技巧,对于创建灵活且兼容性强的网页布局至关重要。
在第五章中,我们深入了解了浮动布局的概念和实践技巧,这为进一步的布局理解打下了良好的基础。在本章中,我们将深入探讨CSS中的定位布局技巧,这将使我们能够更精确地控制页面上元素的位置。
定位布局是CSS中非常强大和灵活的布局方式,它允许我们对页面元素进行细粒度的控制。这包括将元素放置在页面上的精确位置,甚至在页面上覆盖其他元素。
6.1.1 相对定位、绝对定位和固定定位的介绍 相对定位(relative) : 相对定位是将元素相对于其在文档流中的正常位置进行偏移。即使偏移,该元素在页面上仍然占据原来的空间。.relative {
position: relative;
left: 20px;
top: 20px;
}
绝对定位(absolute) : 绝对定位的元素被移出文档流,并相对于其最近的已定位的(非static)祖先元素进行定位。如果不存在这样的祖先元素,则相对于 <html> 元素定位。.absolute {
position: absolute;
bottom: 0;
right: 20px;
}
固定定位(fixed) : 固定定位的元素相对于浏览器窗口进行定位,即使页面滚动,它也会保持在同一个位置。.fixed {
position: fixed;
top: 0;
right: 0;
}
6.1.2 定位属性对布局的影响定位属性使得元素可以跳出常规的文档流,这让我们可以创建复杂的布局和交互效果。例如,我们可以创建一个导航栏始终固定在页面顶部,也可以创建一个弹出式的提示框覆盖在页面的主要内容之上。
定位还允许我们使用 z-index 属性来控制元素之间的堆叠顺序。通过 z-index 值,我们可以控制哪些元素在上层,哪些元素在下层。
在实际项目中,定位布局的应用通常较为复杂。这一部分将探讨如何利用定位布局解决实际问题。
6.2.1 层叠上下文的理解层叠上下文是一个元素层叠顺序的上下文环境。每个层叠上下文由一个元素创建,并且它的子元素将参与该层叠上下文的层叠顺序。理解层叠上下文对于管理定位元素间的相互作用非常关键。
6.2.2 定位技巧在复杂布局中的应用在复杂的布局中,可能需要同时使用多种定位技术来实现设计要求。例如,我们可以使用绝对定位在特定区域创建一个悬浮按钮,或者使用固定定位来创建一个始终可见的页面顶部导航栏。
定位布局技巧的使用场景非常广泛,它是网页设计师和开发者不可或缺的工具之一。在实际应用中,结合其他CSS技术,如变换(transform)和过渡(transition),可以使定位布局的应用效果更加丰富和动态。
通过本章的学习,我们已经对定位布局的基本概念和高级应用有了更深入的了解。下一章我们将探索响应式设计方法,了解如何使我们的网站在各种不同尺寸的设备上都能提供良好的用户体验。
本文还有配套的精品资源,点击获取
简介:《10天学会div+css》是一本面向初学者的网页设计教程,通过易懂的语言和实例教学,快速传授基于web标准的div和css网页布局与样式设计技术。教程内容包括HTML和CSS基础、CSS盒模型、浮动与定位布局、响应式设计、Flexbox和Grid布局、CSS预处理器及优化最佳实践。该课程旨在帮助学习者掌握现代网页设计规范,并为深入学习前端开发奠定基础。
本文还有配套的精品资源,点击获取
相关知识
大学生网页设计制作作业实例代码 (全网最全,建议收藏) HTML+CSS+JS
《网页设计》学习心得(精选34篇)
HTML+CSS鲜花网页制作 DW静态网页设计 个人网页制作
html5鲜花网页代码
HTML+CSS花卉网站设计:静态网页模板与源码分享
用HTML+CSS做一个漂亮简单的花店网页【免费的学生网页设计成品】
html5期末大作业鲜花花卉主题网页设计html网页模板源码?
html网页设计作业代码——网上鲜花网页设计(5页)HTML+CSS+JavaScript web期末作业设计网页
web网页设计期末课程大作业——电影介绍5页HTML+CSS制作
用DIV+CSS技术设计的鲜花网站(web前端网页制作课作业)
网址: 10天精通div+css网页设计课程 https://m.huajiangbk.com/newsview844784.html
上一篇: JAVA计算机毕业设计基于Jav |
下一篇: 基于springboot的婚纱摄 |