小K的H5之旅-实战篇(一)
一、前言
本K在经过两个星期的html和css学习之后,第一次去尝试完成一个网站主页的制作。在四天之后,本K也终于完成了杰瑞教育主页的html和css部分,至于部分涉及js的部分,因为本K还没有学习过这一块,所以就先做了个样式(网页部分效果如下图)。在完成这一页面的时候,K又发现了许多我们还没有学到,但是在网页制作中经常会用到的一些属性,会遇到一些细节上的问题。因此,K写了这篇博文,来记录一下这些属性和问题。
二、属性记录
1、display
display用来定义元素的框的类型,常用的有两个值:block(将元素框类型转为块级)和inline(将元素框类型转为行级)。在这次网站制作中,在使用频率上,K使用的前者居多,经常用在img和span标签上,尤其在需要两者浮动或单独占据一行时。(不要问我为啥不用p标签来取代span,仅仅是因为觉得p有点不太顺眼而已=。=)
2、position
position用来对页面中元素进行定位,常用值有:relative(相对)和absolute(绝对)。在这次网页制作中,凡是float不能解决或者比较麻烦的细节上,K都是用的position来解决的。而且,position这个属性也会常用在网页的大图处理上,这一点会在第三部分详细阐述。另外,用position的时候,一定要注意周围元素的层次关系,否则会出现遮挡覆盖的问题。
详解如下↓
相对定位
使用position:relative;设置元素为相对定位的元素
定位机制:
相对于自己原来的文档流中的位置进行定位,当不指定top等定位值时,不会改变元素位置
相对定位元素仍会占据原有文档流中的位置,而不会释放
使用left/right top/bottom调整位置,当前两者同时存在,left生效;后两者同时存在,top生效(不常用,常用来锁住绝对定位)
绝对定位
使用position:absolute;设置元素为绝对定位元素
定位机制
相对于第一个非static的祖先元素(使用了relative、absolute、fixed定位的祖先元素)进行定位
如果所有均未定位,则相对于浏览器左上角进行定位
使用absolute的元素,会从文档流中完全删除,原有空间释放不占有
fixed
position:fixed;是一种特殊的绝对定位,父容器无法使用relative锁住
定位机制:永远相对于浏览器进行定位
Z-index
作用:设置定位元素的z轴层叠顺序
使用要求:
必须是定位元素才能使用,absolute/relative/fixed
使用时需要考虑父容器的约束。
如果父容器为z-index:auto; 则子容器额z-index可以不受父容器的约束;
如果父容器进行了设置,则子容器的层叠将以父容器的为准(在同一容器中的不同子元素仍可以通过自己的z-index调整层叠关系)
z-index:auto; 与 z-index:0; 的异同
前者为默认值,与后者处于同一平面
前者不会约束子元素的z-index层次;而后者会约束且与父元素处于同一平面
z-index相同(处于同一平面的定位元素)的层叠关系:后来者居上!
3、transform
transform用来定义元素的2D、3D转换效果,在整个主页中算是比较常用的属性。具体常用属性值有缩放scale()和Y轴旋转rotateY(),其他的不做过多的叙述,就借鉴一下W3School(http://www.w3school.com.cn/cssref/pr_transform.asp)上的介绍吧。
4、transition
transition用来定义转换的过渡效果,比如转换的时长一类的问题。
三、问题记录
1、CSS选择器权重计算问题
行内(1000)>ID选择器(100)>class选择器(10)>标签选择器(1)
举个栗子:#div .div .div1 .div2 div 的权重就等于100+10+10+10+1=131.
2、如何处理网页中1920大图的放置问题
举个栗子:
(html部分:原图经切割为4等分,插入方式为div背景图拼接)
<div id="adv">
<div class="adv">
<div class="one"></div>
<div class="two"></div>
<div class="three"></div>
<div class="four"></div>
</div>
</div>
(css部分)
#adv{
width: 100%;
height: 500px;
position: relative;
overflow: hidden;
}
#adv .adv{
position: absolute;
width:1920px ;
height: 500px;
left: 50%;
margin-left: -960px;
}
#adv div{
width: 480px;
height: 500px;
float: left;
background-repeat: no-repeat;
background-size: contain;
}
#adv .one{
background-image: url(../img/abstract/20170121094034635.jpg);
}
#adv .two{
background-image: url(../img/abstract/20170121094108366.jpg);
}
#adv .three{
background-image: url(../img/abstract/20170121094154220.jpg);
}
#adv .four{
background-image: url(../img/abstract/20170121094218539.jpg);
}
(效果图如下 请主动忽视掉两侧的侧边栏=。=)
3、网页的三维结构问题
网页是一个立体的结构,在三维空间上,除了我们所见到的x、y轴上的平面图像,还包括有在z轴上的所谓的元素间层次的问题。在大部分时候,我们经常会遇到在使用绝对定位时,让其周围元素被掩盖在绝对定位元素以下的问题,在这种时候,我们就可以利用在被掩盖元素的样式上添加z-index属性并赋值来将被掩盖的元素“浮”到上层来。当然,多个z-index存在时,是根据其赋值大小来决定层次,值越大,层次越向上。
4、其他问题
4.1 在网页制作时,会发现整个页面与浏览器边之间存在一定的边距,这种时候我是通过在全局上设置margin和padding为0来解决的。
4.2 在使用ul或者ol或者dl时,去除子项前的标志后,ul/ol/dl会默认自己存在一层边距,此时也是利用margin和padding为0来解决的。
4.3 在网页制作时,div是一个非常常用且好用的标签。
四、后记
网页制作真的是一个非常活泼的东西。以前在练习独立的板块时,K觉得网页制作是一件很枯燥乏味的事情。但当K真正制作一个完整网页的时候,在整体把控、页面布局、细节处理、还有为元素添加各种样式之后,整个页面所呈现的活泼的感觉,以及完成一个页面的成就感和满足感让K觉得网页制作,或者说未来K要接触的整个前端工程会是一个很跳跃、很活泼的工作。
小K的H5之旅-实战篇(一)的更多相关文章
- 小K的H5之旅-HTML的基本结构与基本标签
一.什么是HTML HTML是超文本标签语言,即网页的源码.而浏览器就是翻译解释HTML源码的工具. 二.HTML文档的结构 HTML文档主要包括三大部分:文档声明部分.<head>头部部 ...
- 小K的H5之旅-HTML5与CSS3部分新属性浅见
一.HTML部分 1.HTML5新特点 向下兼容.用户至上.化繁为简.无插件范式.访问通用性.引入语义.引入原生媒体支持.引入可编程内容 2.HTML5标签语法 可以省略的元素:空元素语法的元素{br ...
- 小K的H5之旅-CSS基础(一)
一.什么是CSS W3C标准中,倡导有3:其一为内容与表现分离,其二为内容与行为分离,其三为内容结构的语义化.其倡导中第一条的"表现"指的便可以说是CSS.CSS全称Cascadi ...
- 微信小程序实战篇:商品属性联动选择(案例)
本期的微信小程序实战篇来做一个电商网站经常用到的-商品属性联动选择的效果,素材参考了一点点奶茶. 效果演示: 商品属性联动.gif 代码示例 1.commodity.xml <!-- < ...
- 我的第一个上线小程序,案例实战篇二——LayaAir游戏开始界面开发
不知不觉我的第一个小程序已经上线一周了,uv也稳定的上升着. 很多人说我的小程序没啥用,我默默一笑,心里说:“它一直敦促我学习,敦促我进步”.我的以一个小程序初衷是经验分享,目前先把经验分享到博客园, ...
- 【微信小程序】转载:微信小程序实战篇-下拉刷新与加载更多
下拉刷新 实现下拉刷新目前能想到的有两种方式 1. 调用系统的API,系统有提供下拉刷新的API接口 当然,你可以直接在全局变量app.json的window里面配置上面这个属性,这样整个项目都允许下 ...
- 手牵手,使用uni-app从零开发一款视频小程序 (系列下 开发实战篇)
系列文章 手牵手,使用uni-app从零开发一款视频小程序 (系列上 准备工作篇) 手牵手,使用uni-app从零开发一款视频小程序 (系列下 开发实战篇) 扫码体验,先睹为快 可以扫描下微信小程序的 ...
- python爬取微信小程序(实战篇)
python爬取微信小程序(实战篇) 本文链接:https://blog.csdn.net/HeyShHeyou/article/details/90452656 展开 一.背景介绍 近期有需求需要抓 ...
- Redis实战篇
Redis实战篇 1 Redis 客户端 1.1 客户端通信 原理 客户端和服务器通过 TCP 连接来进行数据交互, 服务器默认的端口号为 6379 . 客户端和服务器发送的命令或数据一律以 \r\n ...
随机推荐
- C++中的类继承(4)继承种类之单继承&多继承&菱形继承
单继承是一般的单一继承,一个子类只 有一个直接父类时称这个继承关系为单继承.这种关系比较简单是一对一的关系: 多继承是指 一个子类有两个或以上直接父类时称这个继承关系为多继承.这种继承方式使一个子类可 ...
- MySQL最常用数值函数
数值函数: 用来处理很多数值方面的运算,使用数值函数,可以免去很多繁杂的判断求值的过程,能够大大提高用户的工作效率. 1.ABS(x):返回 x 的绝对值 mysql> select abs(- ...
- Unity调用Android的两个方式:其一、调用jar包
unity在Android端开发的时候,免不了要调用Java:Unity可以通过两种方式来调用Android:一是调用jar.二是调用aar. 这篇文章主要讲解怎么从无到有的生成一个jar包,然后un ...
- React之key详解
一个例子 有这样的一个场景如下图所示,有一组动态数量的input,可以增加和删除和重新排序,数组元素生成的组件用index作为key的值,例如下图生成的ui展示: 上面例子中的input组件渲染的代码 ...
- js日期转化(计算一周的日期)
之前做项目的时候遇到过一个日期转化的问题,一个日期控件和近一天,近七天和近一月的的联动效果.发现自己不会,后来就百度了一下解决了这个问题. 现在抽空又写了一个时间转化的案例(计算一周的日期),因为之前 ...
- stl_组件
2.1.STL中: 2.1.1.包含常用的数据结构. 2.1.2.包含常用的基本算法.结构和算法其实就是一些接口. 2.1.3.提供了一套可扩展的框架. 2.2.六大组件: 2.2.1.容器组件(基本 ...
- java接收数据接口
1.数据接收接口: 这个可以考虑最简单的Servlet方法,而且效率较高: import java.io.PrintWriter;import java.text.SimpleDateFormat;i ...
- 线段树区间更新操作及Lazy思想(详解)
此题题意很好懂: 给你N个数,Q个操作,操作有两种,‘Q a b ’是询问a~b这段数的和,‘C a b c’是把a~b这段数都加上c. 需要用到线段树的,update:成段增减,query:区间求 ...
- 多个php版本的composer使用
由于系统环境变量之前同事安装的laravel是5.1...php默认的环境变量是: 不想破话原有环境变量,因为现在新的项目是laravel5.4...所以在用默认composer require安装时 ...
- windows下nodejs安装及配置
1)在 http://nodejs.org/download/下载一个window的安装包 2)运行安装包,设置安装路径,如安装到D:\nodejs,安装后会自动将d:\nodejs添加到系统变量pa ...