起之前工作面试时,面试官问的一个问题:行内元素有哪些,和块级元素有什么区别?这是一道蛮基础的面试题,但是很多初学者平时只注重标签语义,忽视了标签行内和块级的特性, 因此对于上述问题很有可能答不上来或者答不全。
HTML常见的行内元素有:
<span>、<a>、 <img>、 <input>、<textarea>、<select>、<label>
还有包括一些文本元素如:<br> 、<b>、 <strong>、<sup> 、<sub>、 <i> 、<em> 、<del> 、 <u>等。
要是只回答<span>和<img>那就说不过去了吧。
HTML常见的块级元素有:
<div>、<table>、<form>、<p>、<ul>、
<h1>......<h6>、<hr> 、<pre>、<address>、<center>、<marquee> 、<blockquote> 等。
要是只回答<div>那就说不过去了吧。
那它们之间的区别是什么呢?
·块级元素
1.总是从新的一行开始,即各个块级元素独占一行,默认垂直向下排列;
2.高度、宽度、margin及padding都是可控的,设置有效,有边距效果;
3.宽度没有设置时,默认为100%;
4.块级元素中可以包含块级元素和行内元素。
·行内元素
1.和其他元素都在一行,即行内元素和其他行内元素都会在一条水平线上排列;
2.高度、宽度是不可控的,设置无效,由内容决定。
设置margin左右有效,有边距效果;
设置margin上下会撑大空间但是不会产生边距效果(即盒模型margin-top/bottom有值,但页面上没有边距效果)。
设置padding左右有效,设置padding上下会撑大空间但是不会产生边距效果(同上)。
padding效果如下展示:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<style>
span{
border:1px solid red;
padding:10px;
}
div{
border:1px solid blue;
}
</style>
<body>
<div>块级元素</div>
<span> 行内元素</span>
<span> 行内元素</span>
<div>块级元素</div>
</body>
</html>
3.根据标签语义化的理念,行内元素最好只包含行内元素,不包含块级元素。
转换
当然块级元素与行内元素之间的特性是可以相互转换的。HTML可以将元素分为行内元素、块状元素和行内块状元素三种。
使用display属性能够将三者任意转换:
(1)display:inline;转换为行内元素;
(2)display:block;转换为块状元素;
(3)display:inline-block;转换为行内块状元素。
行内块状元素综合了行内元素和块状元素的特性:
(1)不自动换行,与其他行内元素都会在一条水平线上排列;
(2)高度、宽度、margin及padding都是可控的,设置有效,有边距效果;
(3)默认排列方式为从左到右。
CSS margin 和 padding 属性经常被放在一起讨论,原因有两个:
CSS 长度是距离值的一种。CSS 百分比与长度类似,但区别在于它们总是页面中其他内容的一部分,具体取决于它们与什么属性一起使用。长度可以是绝对值,也可以是相对值。
CSS 提供了两种类型的单元,因此我们可以建立灵活的网站,使其适用于各种设备和配置。
在决定使用绝对还是相对 CSS 单位来处理某个 CSS 属性时,你需要考虑用户想要做什么。
你可能已经熟悉了在文本大小方面使用相对长度单位。对于 font-size 属性使用 rem 单位是最佳实践,因为它允许用户通过个人设备上的设置来自定义他们的浏览体验
相对长度单位也常用于根据用户的视口尺寸改变页面外观。我们就是这样实现响应式设计的,无论用户使用何种设备、窗口大小、页面缩放或文字大小,都能正常运行。
那么,在使用相对长度单位时,我们要针对哪些用户行为进行设计呢?
在所有这些情况下,用户最关心的是什么?是内容,还是内容之间的间距?这两点中哪一点对理解网页至关重要?
当用户在定制自己的观看体验时,对他们来说最重要的是内容和手头的任务。间距对于用户完成任务来说往往并不重要,因此不需要像内容本身那样以同样的速度增长或缩放。
就垂直间距而言,最终也会增加用户完成任务的难度。由于水平空间有限,文字必须换行到下一行,对此你无能为力,但你也不想让页面变得更高,因为你的垂直间距会随着文字大小的增加而增加。
对于只想以不同方式阅读内容的用户来说,过高的页面意味着更多的滚动和操作,而且他们一次能看到的内容也会更加有限。
以下是在不增加文字大小的情况下一页的基本视图。从高层次来看,它具有
要测试仅增加文字大小会发生什么情况,可以在页面的主 <html> 元素中添加一个 CSS 属性: font-size: 200% 。这样做的目的是将网站使用的基本字体大小加倍,因为网站使用 rem 单位来实际调整文字大小。
遗憾的是,在大多数元素中,它们还将 rem 单位用于 margin 和 padding 中。我们可以看到这一点:
为了展示如果这个网页使用 px 单位而不是 rem 单位来设置 margin 和 padding,它将会是什么样子,我使用了浏览器开发者工具检查了 HTML 和 CSS,并覆盖了一些 CSS 值。
入人人都是产品经理【起点学院】产品经理实战训练营,BAT产品总监手把手带你学产品
如果评选近几年互联网行业最火的职位,产品经理一定可以排到前三。到如今,很多人毕业之后直接担任了产品经理/助理的岗位,这也得益于产品岗俨然已成为了很多企业校招时的重头戏。
与直接以产品经理岗位为职业起点的应届生不同,业内也存在很多优秀的产品经理是由如开发、视觉设计等其它岗位转化过来。对于转岗做产品的人来说,先前的工作经验无疑在一定程度上也增加了自身的优势。
对于产品经理来说,思维逻辑能力、沟通表达能力等等都是很重要的人才衡量标准。同时若在某些岗位有比较多的了解,也会增加其竞争力。比如程序猿出身的产品经理,往往对技术实现的可行性、开发工作量等方面有一定的先天优势;视觉设计出身的产品经理,往往在页面设计、用户体验等方面更胜一筹。
换个角度来理解,产品经理需要了解产品整个研发周期相关的各种知识,才能具备成为优秀产品经理的基本素质(注意:只是具备了基本素质而已)。所以我个人坚持的一个观点就是产品经理要有孜孜不倦的学习态度,对相关的领域充满好奇心,换句说好奇心改变产品经理的视野格局(怎么这么像某个手机品牌的slogan...)。
说回来我们的主题,产品人为什么要学习前端知识?我感觉最重要的原因是两个:技术门槛低、更接近用户和UI设计,另外还会带来一个便利性。
首先,前端开发技术门槛相对较低。相比APP、后台服务器等项目,前端开发要简单的很多,对于技术门外汉来说,完全可以放下对“编程”两个字的恐惧心理,并且由于技术门槛低,做的东西更容易所见即所得,在学习过程中更能带来成就感,而这种成绩感正向的激发出更多学习热情。所以说,如果你是一名不懂技术的产品经理,强烈推荐通过前端开发这门技术来走进程序猿们的世界。
其次,前端更接近用户和UI设计。跟后端不同,用户直接面对使用的就是前端页面,所以在开发过程中需要不断地站在用户的角度去考虑问题,这在用户体验方面会和产品经理的职责产生一定的化合作用。同时,前端也需要更多的关注页面布局、视觉展现等等,这在UI设计层面也能和产品经理的职责相辅相成。所以说,站在产品经理的角度来看,前端开发相比其他技术更适合进行深层次的探索。
另外,当测试web项目前端页面时还有个好处,因为有前端知识,所以自己可以随时查看页面中各元素的属性,并能进行细节的调整且能实时看到效果。这样在和前端开发、UI设计师等沟通时更加便捷准确,经过你的试验后,可以直接跟他们说按钮的高度改为24px会不会更好一点,而不是很模糊的说按钮的高度调小一点吧。这在一定程度上也会提升整个团队的协作效率。
学习前端知识前,首先要先从宏观层面对整个前端体系有个大致的了解。由于我也不是技术出身,更专业的分析解读可以通过查询相关的知乎问题等资料去了解,以下只是我站在产品经理角度的一些不成熟的理解,若有误欢迎请高手指正。
对于用户而言,最直观的东西无非就是可以肉眼看到的东西,而html/css就是用来干这个的。html 指的是超文本标签语言,说白了就是一堆标签,标签中定义了网页中展现的各种元素,比如网页的标题、正文中的文字、图片、视频等等;CSS 指层叠样式表(Cascading Style Sheets),说白了就是定义html中元素的表现形式,比如字号、颜色、对齐方式等等。
在学习阶段,要了解很多东西,包括但不局限于:
我之所以举几个例子说明,是想表明在我们学习的过程中,不要钻知识点的牛角尖,更要学会分模块的总结思考,这样才能融会贯通,学起来更加高效。在这个阶段推荐w3school 在线教程,这个网站虽然看起来非常接地气,但非常适合入门学习。
通过入门篇的学习,基本上可以写一些静态的界面了。而JavaScript则是用来实现交互效果,让html、css展示的静态页面动起来。比如当鼠标悬浮到分享按钮上方,则会弹出分享渠道的一个小窗口,这个就是用JavaScript实现出来的。
在了解一些基础的JavaScript概念之后,则可以继续学习jQuery,其实就是一个JavaScript代码库,通过jQuery能够显著降低我们编写交互效果的难度。
这个阶段同样推荐w3school 在线教程这个网站进行学习,同时也可以通过专业的渠道去了解一些前端UI框架的社区网站,提供大量 CSS 样式与 jQuery 插件,从而能够帮助我们快速的制作一些酷炫的交互网站。
以上两个篇章基本就是前端的内容,在知乎上曾看到这样一句描述,根据非常贴切:html是名词,css是形容词,javascript是动词,三个互相配合才是一个句子。对于产品经理而言,学习了解这些知识已经足够了,完成达到了学习前端的初衷,如果对此十分感兴趣,想学的更深入,则可以更进一步。
前端完成了浏览器页面展示的运算,页面的展现离不开服务器和数据库的支持,这就是后端的开发。后端的架构不像前端已经有很明确的标准形式,目前存在各种方案,而且技术门槛相比前端也比较高。我对这块的了解也非常少,有兴趣的同学可以移步更专业的地方去学习了解。
学习前端小心得
虽然我大一学过C++语言,但并没有走开发的路线,所学到的知识也仅限于书本,所以严格意义上我也是一个技术门外汉。因为最近的一个web项目和自身的好奇心驱动,所以才在最近不到一个月内的零散时间学习了解一些相关的知识(目前水平有限,仍需继续研究),学习过程中的一些小心得也希望能跟大家分享。
个人练习作品分享
在学习过程中,我也尝试写了一个个人网站,目前还非常简陋(大神勿喷),分享出来供大家一起学习交流。
对了,如果想把自己的网站挂到网上,还需要学习建站技术,购买域名、主机服务器等。目前对具体的步骤我也不太清楚,今后有时间可以研究一下把网站放上去,想想还算是比较有成就感的一件事情。
如果大家感兴趣,目前只能把网页文件下载到本地,然后本地打开查看(这样也有个好处,用到的图标和背景图片可以更方便的拿到),欢迎大家交流指正。
本文由 @刘鹏 原创发布于人人都是产品经理 ,未经许可,禁止转载。
*请认真填写需求信息,我们会在24小时内与您取得联系。