后端工程师虽然大部分工作都是跟服务器缓存数据库打交道,但有时也需要写一些前端代码。

有些公司的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 外,只需要再了解三个值就足够用了,它们分别是 blockinline-blockinline

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 知识的更多相关文章

  1. 2015 前端[JS]工程师必知必会

    2015 前端[JS]工程师必知必会 本文摘自:http://zhuanlan.zhihu.com/FrontendMagazine/20002850 ,因为好东东西暂时没看懂,所以暂时保留下来,供以 ...

  2. [ 学习路线 ] 2015 前端(JS)工程师必知必会 (2)

    http://segmentfault.com/a/1190000002678515?utm_source=Weibo&utm_medium=shareLink&utm_campaig ...

  3. MySql必知必会内容导图

    <MySQL必知必会>从介绍简单的数据检索开始,逐步深入一些复杂的内容,包括联结的使用.子查询.正则表达式和基于全文本的搜索.存储过程.游标.触发器.表约束,等等.通过重点突出的章节,条理 ...

  4. python网络爬虫,知识储备,简单爬虫的必知必会,【核心】

    知识储备,简单爬虫的必知必会,[核心] 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到桌 ...

  5. 迈向高阶:优秀Android程序员必知必会的网络基础

    1.前言 网络通信一直是Android项目里比较重要的一个模块,Android开源项目上出现过很多优秀的网络框架,从一开始只是一些对HttpClient和HttpUrlConnection简易封装使用 ...

  6. RecyclerView 必知必会(转)

    [腾讯Bugly干货分享]RecyclerView 必知必会 本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com ...

  7. H5系列之地理位置(必知必会)

    H5之地理位置必知必会     [02]概念   规范地址:http://www.w3.org/TR/geolocation-API/     HTML5 Geolocation(地理定位)用于定位用 ...

  8. SQL必知必会,带你系统学习

    你一定听说过大名鼎鼎的Oracle.MySQL.MongoDB等,这些数据库都是基于一个语言标准发展起来的,那就是SQL. SQL可以帮我们在日常工作中处理各种数据,如果你是程序员.产品经理或者是运营 ...

  9. 测试脚本配置、ORM必知必会13条、双下划线查询、一对多外键关系、多对多外键关系、多表查询

    测试脚本配置 ''' 当你只是想测试django中的某一个文件内容 那么你可以不用书写前后端交互的形式而是直接写一个测试脚本即可 脚本代码无论是写在应用下的test.py还是单独开设py文件都可以 ' ...

  10. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

随机推荐

  1. idea整合mybatis逆向工程

    --pom.xml添加插件 <build> <finalName>hnapi</finalName> <plugins> <plugin> ...

  2. ionic3 打开相机与相册,并实现图片上传

    安装依赖项等: $ ionic cordova plugin add cordova-plugin-camera $ npm install --save @ionic-native/camera 创 ...

  3. 50)PHP,单例模式

    class B{ ; private static $instance; private function __construct(){} public static function getNew( ...

  4. 跨域问题与SpringBoot解决方案

    什么是跨域? 定义:浏览器从一个域名的网页取请求另一个域名下的东西.通俗点说,浏览器直接从A域访问B域中的资源是不被允许的,如果想要访问,就需要进行一步操作,这操作就叫"跨域".例 ...

  5. fiddler修改请求表单数据

    一.使用出发点:进行测试某个添加编辑功能时候,部分字段前端限制了字段长度或者SQ,特殊字符等等的输入: 但是我们测试验证后端服务器是否处理,这个时候去修改提交请求表单,绕过前端的限制进行测试: 二.使 ...

  6. CountingSort(计数排序)原理及C++代码实现

    计数排序是需要假设输入数据的排序之一,它假设输入元素是0到k区间内的一个整数,其中k为某个整数.当k=O(n)时,计数排序的时间复杂度为θ(n). 因为不是通过比较来排序,所以它的时间复杂度可以达到θ ...

  7. struts.xml中namespace的配置之浏览器兼容性

    还是做练习项目的时候发现一个问题: <span style="font-size:14px;"><package name="default" ...

  8. C++头文件和std命名空间

    C++ 是在C语言的基础上开发的,早期的 C++ 还不完善,不支持命名空间,没有自己的编译器,而是将 C++ 代码翻译成C代码,再通过C编译器完成编译.这个时候的 C++ 仍然在使用C语言的库,std ...

  9. 由情感计算带来的惊喜发现——记Rosalind W. PICARD“21世纪的计算”大会主题演讲

    W. PICARD"21世纪的计算"大会主题演讲" title="由情感计算带来的惊喜发现--记Rosalind W. PICARD"21世纪的计算& ...

  10. HttpClient简介与案例分析

    HttpClient简介 HTTP 协议可能是现在 Internet 上使用得最多.最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源.虽然在 JDK 的 jav ...