后端工程师必知必会的前端 css 知识
后端工程师虽然大部分工作都是跟服务器缓存数据库打交道,但有时也需要写一些前端代码。
有些公司的OAM后台基本是由后端工程师承包的,所以前端基础知识是必须要掌握的;就算开发中不直接写前段代码,了解前端知识能让我们跟前端小伙伴更愉快的交流。
Js对于后端小伙伴来说不算难点,能够顺手的使用(当然十分依赖 jQuery),涉及到 css 就会有点懵逼了。
后台开发一般不会用到太难的前端技巧,能够在完成正确布局的基础上,再稍微做一些美化,就已经够用了。
下面的内容有一些代码样例,这是一部分前置的 css 样式。
.green {
background-color: lightseagreen;
}
.red {
background-color: orangered;
}
.container {
border: 1px solid #0000f1;
}
.w100 {
width: 100px;
height: 100px;
}
.w50 {
width: 50px;
height: 50px;
}
把元素放到正确的位置上
1)文档流
浏览器会把 html 元素按照从上到下,从左到右依次排放。
Html 中全部元素都是盒模型,盒子会占用一定的空间,依次排放在HTML中,形成了文档流。
某些特殊的 css 样式会把元素脱离文档流。某个元素脱离文档流后,在文档流中的其他元素将忽略该元素并填补其原先的空间。
1.1)float
浮动方式脱离文档流
示例:
<div class="container">
<div class="green w100">
</div>
<div class="red w50">
</div>
<div class="green w100">
</div>
</div>
效果:
给中间的红色块添加浮动:
<style>
.float {
float: left;
}
</style>
<div class="container">
<div class="green w100">
</div>
<div class="red w50 float">
</div>
<div class="green w100">
</div>
</div>
效果:
红色块在原来的行内向左浮动并脱离了文档流,下面的绿色块顶上来了。
float
还有一些其他用法,但float
一般不常用,这里不多做讨论。
1.2)使用定位脱离文档流
如果给元素设置了 position
属性,且该属性的值是 absolute
或者 fixed
,则元素也会脱离文档文档流。
脱离前的代码示例:
<div class="container">
<div class="green w100">
</div>
<div class="red w50 ">
</div>
<div class="green w100">
</div>
<div class="red w50 ">
</div>
<div class="green w100">
</div>
</div>
效果:
脱离后:
<style>
.fixed {
position: fixed;
}
.absolute {
position: absolute;
}
</style>
<div class="container">
<div class="green w100">
</div>
<div class="red w50 fixed">
</div>
<div class="green w100">
</div>
<div class="red w50 absolute">
</div>
<div class="green w100">
</div>
</div>
效果:
虽然两个红色块还在原来的坑上,但实际上它们已经不占文档流了,所以下面的两个绿色块都上来了。
1.3)display: none
设置 display
属性为 none
,脱离文档流,并不在页面展示了。
2)display
样式
display
样式决定了元素的展现形式。
display
有很多取值,比如上面提到的 none
值表示不在页面展示。
对于后端小伙伴来说,除了 none
外,只需要再了解三个值就足够用了,它们分别是 block
,inline-block
,inline
。
2.1)block
块元素
块元素在浏览器中展示时,通常会以新行来开始(和结束)。
常见的(display 默认为 block)块元素有 <h1>...<h6>, <p>, <ul>, <table>, <div>, <pre>
。
举个栗子:
<div class="container">
<div class="green">
哈哈
</div>
<h1 class="red w100">呵呵</h1>
<p class="green">
嘿嘿
</p>
</div>
效果为:
三个块级元素各占一行。同时你可能会发现这三个元素上下之间有间距,这是因为 p
h1-h6
标签默认是有 margin-top
margin-bottom
的。
同时可以给块级元素设置高宽,宽度未设置时默认是 100%
。
2.2)inline
元素
行内(inline
)元素会在一行内从左向右排布,如果一行排满了,会往下一行堆叠。
常见的行内元素有 span label b i sub sup
,等文本格式化标签。
举个栗子:
<div class="container">
<p>
<span class="green w100">哈哈</span>
<label class="red w100">哈哈</label>
<b class="red w100">呵呵</b>
<i class="red w100">呵呵</i>
<sub class="red w100">呵呵</sub>
<sup class="red w100">呵呵</sup>
<span class="green w100">哈哈</span>
<label class="red w100">哈哈</label>
<b class="red w100">呵呵</b>
<i class="red w100">呵呵</i>
<sub class="red w100">呵呵</sub>
<sup class="red w100">呵呵</sup>
<span class="green w100">哈哈</span>
<label class="red w100">哈哈</label>
<b class="red w100">呵呵</b>
<i class="red w100">呵呵</i>
<sub class="red w100">呵呵</sub>
<sup class="red w100">呵呵</sup>
<span class="green w100">哈哈</span>
<label class="red w100">哈哈</label>
<b class="red w100">呵呵</b>
<i class="red w100">呵呵</i>
<sub class="red w100">呵呵</sub>
<sup class="red w100">呵呵</sup>
<span class="green w100">哈哈</span>
<label class="red w100">哈哈</label>
<b class="red w100">呵呵</b>
<i class="red w100">呵呵</i>
<sub class="red w100">呵呵</sub><sup class="red w100">呵呵</sup>
</p>
</div>
效果为:
细心的话,你会发现上面这些元素都设置了 w100
这个类,但是高宽都没有变化。这是因为行内元素不能设置高宽,只会根据内容的高宽自适应。
ps:每个行内元素之间的空格是因为在编辑前里两个标签之间有个回车以及多个 tab(空格),这些不可见字符被当成一个空格展示了。最后两个元素没有间隔,所以中间没有空格。
2.3)inline-block
行内块
行内块元素既可以设置高宽,又可以像行内元素一样并排排列。
常见的行内块元素有 img input button select
等。
示例:
<p>
<img src="init.png" class="red w100">
<input class="green w50">
<button class="red w100">哈哈</button>
<select class="green w100">
<option>1</option>
</select>
</p>
效果为:
2.4)display
小结
各个元素都有自己默认的 display
属性,但我们可以给元素设置 display
属性覆盖默认的属性。
比如给 div
设置 display: inline-block
,就可以让块儿并排排列了。给 span
设置 display:inline-block
,就可以设置高宽了。
示例:
<span style="display: block" class="red">我看起来像是p标签了</span>
<div>
<p style="display: inline">香蕉</p>
<p style="display: inline">橙子</p>
<p style="display: inline">大
后端工程师必知必会的前端 css 知识的更多相关文章
- 2015 前端[JS]工程师必知必会
2015 前端[JS]工程师必知必会 本文摘自:http://zhuanlan.zhihu.com/FrontendMagazine/20002850 ,因为好东东西暂时没看懂,所以暂时保留下来,供以 ...
- [ 学习路线 ] 2015 前端(JS)工程师必知必会 (2)
http://segmentfault.com/a/1190000002678515?utm_source=Weibo&utm_medium=shareLink&utm_campaig ...
- MySql必知必会内容导图
<MySQL必知必会>从介绍简单的数据检索开始,逐步深入一些复杂的内容,包括联结的使用.子查询.正则表达式和基于全文本的搜索.存储过程.游标.触发器.表约束,等等.通过重点突出的章节,条理 ...
- python网络爬虫,知识储备,简单爬虫的必知必会,【核心】
知识储备,简单爬虫的必知必会,[核心] 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到桌 ...
- 迈向高阶:优秀Android程序员必知必会的网络基础
1.前言 网络通信一直是Android项目里比较重要的一个模块,Android开源项目上出现过很多优秀的网络框架,从一开始只是一些对HttpClient和HttpUrlConnection简易封装使用 ...
- RecyclerView 必知必会(转)
[腾讯Bugly干货分享]RecyclerView 必知必会 本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com ...
- H5系列之地理位置(必知必会)
H5之地理位置必知必会 [02]概念 规范地址:http://www.w3.org/TR/geolocation-API/ HTML5 Geolocation(地理定位)用于定位用 ...
- SQL必知必会,带你系统学习
你一定听说过大名鼎鼎的Oracle.MySQL.MongoDB等,这些数据库都是基于一个语言标准发展起来的,那就是SQL. SQL可以帮我们在日常工作中处理各种数据,如果你是程序员.产品经理或者是运营 ...
- 测试脚本配置、ORM必知必会13条、双下划线查询、一对多外键关系、多对多外键关系、多表查询
测试脚本配置 ''' 当你只是想测试django中的某一个文件内容 那么你可以不用书写前后端交互的形式而是直接写一个测试脚本即可 脚本代码无论是写在应用下的test.py还是单独开设py文件都可以 ' ...
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
随机推荐
- 109)PHP与oracle网址
https://pecl.php.net/package/oci8/2.1.8/windowshttps://www.toadworld.com/platforms/oracle/w/wiki/116 ...
- day31-hmac模块检测客户端是否合法
#如果客户端知道服务端的ip地址和端口,就可以连接服务端,信息不安全. #使用os.urandam随机生成32位bytes,然后hmac加密之后再发送给客户端. #server: import soc ...
- VSTO外接程序项目只用1个文件实现Ribbon CustomUI和CustomTaskpane定制【C#版】
VSTO中的自定义功能区和自定义任务窗格需要用到各种命名空间.添加所需文件,才能实现.后来我发现可以把所有代码都写在ThisAddin.cs这个默认文件中. 大家可以在Visual Studio中创建 ...
- Navicat 12 无限期试用
最近发现navicat12又过期了,以前的是用的破解软件,然后是到1899年过期哈哈哈哈哈哈.重装了系统后,软件也重装了,发现破解软件不好使了,就先试用了,现在到期了.很是难受,这可咋整,不过在网上看 ...
- IntelliJ的.iml文件及相关的Class Not Found 问题
.iml 文件是IntelliJ IDEA 自动创建的模块文件,用于Java应用开发,存储一些模块开发相关的信息,比如一个Java组件, 插件组件,Maven组件等等, 还可能会存储一些模块路径信息, ...
- SPI以及IIC的verilog实现以及两者之间的对比
一.SPI是一种常用的串行通信接口,与UART不同的地方在于.SPI可以同时挂多个从机,但是UART只能点对点的传输数据,此外SPI有四条线实现数据的传输,而UART采用的是2条实现串行数据的传输 1 ...
- F5 BIG-IPLTM串联组网连接模式
- 点分治——POJ 1741
写的第一道点分治的题目,权当认识点分治了. 点分治,就是对每条过某个点的路径进行考虑,若路径不经过此点,则可以对其子树进行考虑. 具体可以看menci的blog:点分治 来看一道例题:POJ 1741 ...
- 浮动框架iframe
浮动框架式一种比较特别的框架,和frame比较类似.不过frame必须在frameset中才可以,而iframe不一样,首先, 他是一种内联框架,其次,他可以放在网页中的任何位置. 所以,iframe ...
- [LC] 367. Valid Perfect Square
Given a positive integer num, write a function which returns True if num is a perfect square else Fa ...