CSS 布局入门

概述

Web 兴起之后,关于CSS的介绍和学习资料已经铺天盖地。
本文不涉及具体的CSS语法之类的,而是希望从初学者的角度,让没有接触或很少接触CSS的人能快速的了解 CSS 到底是什么以及如何使用。

什么是 CSS

了解一个概念,首先看到的就是它的名字,而往往被忽略的,也是它的名字。
CSS (cascading style sheets),可以翻译成中文 层叠样式表 。从名字可以看出:

  • 层叠:说明 样式可以叠加,所以会有优先级
  • 样式表:说明CSS是描述样式的,而且只是个 ,不是程序语言,所以后来随着 CSS 的应用越来越多,才会有 Sass 和 Less 这些扩充 CSS 语法的语言出来

CSS 的作用

CSS 的作用就是样式,其实 Web 只用 HTML也可以做出来,只是随着机器和浏览器性能的提升,人们对网页的美观和易用性要求越来越高,CSS 的重要性才逐渐凸显。
CSS 我觉得有2个主要的作用:

  • 可以将 Web 的样式统一管理,便于修改,类似于程序语言中的变量或者配置文件
  • 将网页内容和样式分离开,让灵活呈现内容成为可能

注意 HTML 才是网页的实际内容,CSS 只是控制HTML元素的如何显示,显示与否。

CSS for 布局

CSS 在布局上用的最多,就是因为了有了 CSS,才会有所谓的 div css 布局方式,以前用 HTML 都是 table 布局。

初步了解 div css 的布局,我觉得了解3点就够了,框模型,定位和浮动。

框模型

每个div对于css来说都是一个 。每个框由内到外由4部分组成 content padding border margin
div 的长和框由这4部分的长之和和宽之和组成
示例:

<!doctype html>
<html lang="en"><head><meta charset="UTF-8"/><title>CSS Sample</title><link href="index.css" rel="stylesheet"/></head><body><div>Content</div></body>
</html>body {background-color: #FAEBD7;
}div {width: 100px;height: 100px;padding: 30px;border: 10px solid blue;margin: 10px;background-color: red;text-align: center;
}

例子很简单,但是可以看出:

  1. 从外到内 依次是 margin, border, padding, content
  2. div 的 width 和 height 只是 content 的大小

定位

理解了 框模型之后,定位也很简单,其实就是将一个个框定位在页面上。
定位分为绝对定位和相对定位。

绝对定位

就是在浏览器上的绝对位置,通过 top 和 left 属性设置相对于浏览器左上角的距离

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<title>CSS Sample</title>
<link href="index.css" rel="stylesheet"/>
</head>
<body>
<div id="div1">Content1</div>
<div id="div2">Content2</div>
</body>
</html>body {background-color: #FAEBD7;
}div {width: 100px;height: 100px;padding: 30px;border: 10px solid blue;margin: 10px;background-color: red;text-align: center;position: absolute;
}#div1 {top: 100px;left: 100px;
}#div2 {top: 200px;left: 200px;
}

绝对定位明确但不灵活,除非屏幕大小能固定,否则需要多套css。设置不好会造成元素的重叠。
绝对定位中有个很关键的设置是 position: absolute

相对定位

相对定位中每个 div 的 top 和 left 不再是相对浏览器的左上角了。而是相对剩余位置的左上角。
同样是上面的例子,把 position: absolute 换成 position: relative 可以发现2个div 不再重叠了。

浮动

div 默认是 inline的,也就是每个 div 占据了一行。
布局时,如果希望多个div排列在一行,那么就会用到浮动(或者用以前的 table方式)
设置 div 浮动属性之后,就可以用div布局出各种结构。

下面以常见的管理系统为例,做一个简单的 div css 布局

<!doctype html>
<html lang="en"><head><meta charset="UTF-8"/><title>CSS Sample</title><link href="index.css" rel="stylesheet"/></head><body><div id="head">head</div><div id="middle"><div id="nav">nav</div><div id="content">content</div></div><div id="foot">foot</div></body>
</html>body {background-color: #FAEBD7;height: 100%;margin: 0px;padding: 0px;
}div {border: 1px solid black;text-align: center;
}#head {height: 50px;width: 100%;
}#middle {width: 100%;top: 50px;bottom: 100px;left: 0px;position: absolute;
}#nav {float: left;width: 200px;height: 100%;
}#content {height: 100%;overflow: hidden;
}#foot {height: 100px;width: 100%;bottom: 0px;left: 0px;position: absolute;
}

上面的示例中,head,foot 高度固定,nav 宽度固定。其他都是自适应的,可以通过调整浏览器窗口的大小看到效果。

总结

CSS 布局很简单,如果还有其他的交互动作,可以通过js来实现(比如导航和内容的联动)。
现在已经基本没有人会用 table 的布局方式了,因为 table 本来只展现数据的一种方式,row,cell 的方式也不适合组件化。

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

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

相关文章

迷你搜索引擎–使用Neo4j,Crawler4j,Graphstream和Encog的基础知识

继续执行正在实现搜索引擎的Programming Collection Intelligence &#xff08;PCI&#xff09;的第4章。 我可能比做一次运动所咬的东西要多。 我认为&#xff0c; 与其一直使用本书中使用的普通关系数据库结构&#xff0c;不如说我一直想看看Neo4J&#xff0c;所以现在是时候…

linux人脸识别视频推流,RTMP推流协议视频智能分析/人脸识别/直播点播平台EasyDSS接口调用注意事项介绍...

TSINGSEE青犀视频目前推出了前端支持不同协议设备接入的视频智能分析平台&#xff0c;包括RTSP协议的EasyNVR、GB28181协议的EasyGBS&#xff0c;RTMP推流协议的EasyDSS&#xff0c;还有能够进行人脸识别、车牌识别的EasyCVR&#xff0c;这些平台均提供了视频转码分发的能力&am…

js高级写法

名称 一般写法优化取整(不四舍五入) parseInt(a,10); //Before Math.floor(a); //Before a>>0; //Before ~~a; //After a|0; //After 取整(四舍五入&#xff09; Math.round(a); //Beforenum.toFixed(0) a.5|0; //After未定义 undefined; //Before void 0; //After, 快…

IntersectionObserve API使用

why 之前图片懒加载的实现方法大多数为&#xff1a;给window添加scroll事件&#xff0c;滚动时获取元素的offset值&#xff0c;判断元素在viewport内的可见行。这样做的缺点是&#xff1a;频繁的计算dom节点的属性导致性能较差&#xff0c;对scroll绑定的回调函数进行节流能减少…

css小技巧(1)

1、-webkit-overflow-scrolling: touch; 解决ios滑动时无缓冲问题 2、::-webkit-scrollbar 设置ios滑动时是否显示滚动条 3、::selection 选中文字时文字颜色和选中色 <!doctype html> <html> <head> <meta charset"utf-8"> <meta cont…

在基于图论的Java程序中基于DSL的输入图数据的方法

我们大多数人已经编写了一些程序来处理图论算法&#xff0c;例如查找两个顶点之间的最短路径&#xff0c;查找给定图的最小生成树等等。 在这些算法的每一种中&#xff0c;表示图形的编程方式是使用邻接矩阵或邻接表 。 两者都不是定义图形输入的非常直观的方法。 例如&#xf…

linux 暴力删除文件,暴力删除文件

有些时候电脑上会有一些文件删除不了&#xff0c;例如&#xff1a;删除的时候&#xff0c;提示文件不存在&#xff0c;或者请求的安全信息不可用或无法显示。无法删除文件夹的原因:1.当文件夹中存在正在被占用的文件时,删除当然会失败。其中包括有一些病毒程序在运行时,删除文件…

Remmarguts' Date(POJ2449+最短路+A*算法)

题目链接&#xff1a;http://poj.org/problem?id2449 题目&#xff1a; 题意&#xff1a;求有向图两点间的k短路。 思路&#xff1a;最短路A*算法 代码实现如下&#xff1a; 1 #include <set>2 #include <map>3 #include <queue>4 #include <stack>5 …

点击文本框后页面变大

原因&#xff1a;HTML中默认是认为16px的字体&#xff0c;人才能看清楚&#xff0c;所以&#xff0c;当点击文本框的时候&#xff0c;当前文本框会以字体16px的大小显示&#xff08;即字体小于16px页面会变大&#xff09;。解决原理&#xff1a;设置文本框的的字体为16px&#…

通过外部文件覆盖打包的Spring应用程序属性文件

开发Spring应用程序时&#xff0c;最常见的用例是您希望拥有多个版本的配置属性&#xff0c;具体取决于要部署到的位置&#xff0c;例如&#xff0c;数据库URL或功能标志可能是特定于dev&#xff0c;qa&#xff0c;production等环境的。 像大多数Spring开发任务一样&#xff0…

usb3.0 linux无法识别,USB3.0接口不能识别U盘的解决方法

USB接口可以说是电脑的标配&#xff0c;现在基本上所有电脑都会搭载USB接口。而USB标准从1.0发展到现在的3.0&#xff0c;甚至更新的也已出来。不过&#xff0c;如果USB3.0无法识别U盘&#xff0c;那该怎么办呢?USB3.0是一种技术也是一种规范&#xff0c;现在很多笔记本都是默…

table 鼠标移上去改变单元格边框颜色。

表格定义了 border-collapse:collapse;边框会合并为一个单一的边框。会忽略 border-spacing 和 empty-cells 属性。用td:hover,显示不全 搜索了好久&#xff0c;没有找到好的方法&#xff0c;用左右边框也不完美。 于是就在想&#xff0c;移上去的时候给加个伪元素after&#…

PotPlayer安装与配置

目录 1.简介 2.安装 3.设置 基本选项设置&#xff1a; 播放选项设置&#xff1a; PotPlayer皮肤设置&#xff1a; 1.简介 PotPlayer一款小巧简单的视频播放软件&#xff0c;具有于强大的定制能力和个性化功能。 2.安装 官网下载 potplayer http://potplayer.daum.net/?langzh_…

如何使用反射来基于JPA注释记录数据模型

因此&#xff0c;当您仅可以注释Java类时&#xff0c;使用JPA&#xff0c;Hibernate或EBeans会很酷&#xff0c;但是您不是一直希望可以从代码“生成”数据模型的文档吗&#xff1f; 提取JPA / Hibernate和其他验证批注的信息&#xff1f; 假设您的bean中包含所有这些漂亮的注…

Hadoop的目录结构

转载于:https://www.cnblogs.com/wzlbigdata/p/8392162.html

css3制作广告栏效果的疑问?

【整理】原文&#xff1a;https://segmentfault.com/a/1190000007087701 本人新手&#xff0c;国庆苦逼加无用班&#xff0c;那是我在夕阳下的奔跑吗&#xff1f;闲来无聊整理以前学习的资料&#xff0c;关于广告栏的效果制作&#xff0c;详情观看[这里][1]。其中用了一个作者自…

linux 实验 ps,Linux实验室:监控命令iostat与ps_服务器x86服务器-中关村在线

4、iostat与上面的命令相似&#xff0c;很显然&#xff0c;这个linux系统监控命令是属于IO监控系列的&#xff0c;iostat(I/O statistics&#xff0c;输入输出统计)是一个用于收集显示系统存储设备输入和输出状态统计的简单工具。例如命令&#xff1a;iostat -m -x 1 1000。从结…

从分布式锁角度理解Java的synchronized关键字

分布式锁 分布式锁就以zookeeper为例,zookeeper是一个分布式系统的协调器,我们将其理解为一个文件系统,可以在zookeeper服务器中创建或删除文件夹或文件.设D为一个数据系统,不具备事务能力,在并发状态下可能出现对单个数据同时读写.客户端A,B是数据系统D提供的客户端,能够对其读…

基于浏览器的密钥生成以及与浏览器的密钥/证书存储的交互

想象以下情况&#xff1a; 您需要从访问您的网站的用户那里获取一个密钥&#xff08;在非对称情况下为用户的公共密钥 &#xff09;&#xff0c;并希望浏览器记住私有部分&#xff0c;而不会因冗长的导入过程而困扰用户。 老实说&#xff0c;实际上&#xff0c;您甚至不希望用…

一个简单的前端事件框架

参考网上的一个资料&#xff0c;做下备注。 <html><head><title>js event demo</title><meta http-equiv"pragma" content"no-cache"><meta http-equiv"cache-control" content"no-cache"><me…