热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CSS中那些微妙模糊的属性

在前端开发中,我经常碰到一些不能马上理解的css属性,于是打算以后但凡碰到这些微妙又模糊的属性,都归纳到这里。CSS打印页面中的orphans和widows@mediaprint打

在前端开发中,我经常碰到一些不能马上理解的css属性, 于是打算以后但凡碰到这些微妙又模糊的属性,都归纳到这里。

CSS打印页面中的 orphans和widows

@media print打印页面用得较少,对于打印页面中的属性一直比较陌生, orphanswidows注意不是windows)属性主要用来控制打印页面中排版中保留的最少行问题,理解该属性,也更能体会到CSS在排版上对于各种页面输出的灵活控制。

比如在打印页面排版的时候, 某些段落在分页的情况下会不得不出现截断,orphans的作用就是控制出现截断时在前一页中需要保留最少行数(在分栏情况下也会出现截断)一般的文字处理器在这种情况下会为某个出现截断的段落保留2行(因为如果没有这项机制,将出现只有一行出现在截断处,而这种排版在很多时候是影响美观和阅读的),这里直接用用该帖中的栗子(原帖地址?orphans)

同样的逻辑, 在打印页面中,段落被截断后在后一页面中出现的截断由widows属性控制,widows控制在后一页中段落被截断后保留的最少行数。
CSS spec文档中的原文:

The ‘orphans’ property specifies the minimum number of lines in a block container that must be left at the bottom of a page. The ‘widows’ property specifies the minimum number of lines in a block container that must be left at the top of a page. Examples of how they are used to control page breaks are given below.

文档地址:?13.3.2 Breaks inside elements: ‘orphans’, ‘widows’
如下图中标红的文字就是截断处所保留的最少行数,改段落的orphans属性设置为3:
《CSS中那些微妙模糊的属性》

代码为:

@media print {
p {
orphans: 3;
}
}

这两个属性的默认值(default)是2。
这两个属性仅适用于打印页面, 貌似在常规的屏幕页面中似乎我还不知道关于段落截断控制的方法, 考虑到屏幕页面中的情况太复杂了, 所以大多数情况也应该交给浏览器来处理。
关于这两个属性的更多参考,mark在此:
MDN orphans
Wiki Widows and orphans

animation-fill-mode属性值中的“both”

css3 动画中animation-fill-mode中的“both”属性,无论在mdn或者w3school的文档中对该属性的解释都是:

动画将会执行 forwards 和 backwards 执行的动作

而MDN的原版文档中对该属性的解释为:

The animation will follow the rules for both forwards and backwards,
thus extending the animation properties in both directions.

这样的解释让人摸不着头脑, 实践出真知,我们还得试一下才能知道。
用demo说话:
播放次数为1,animation-fil-lmode为both时的动画停留状态
播放次数为1 没有设置animation-fill-mode时的动画停留状态
附上css的代码:

#box{
width:100px;
height:100px;
background:black;
/* 在此设置有没有both以及播放次数的对比 */
-webkit-animation: move 1s ease 1 alternate both;
animation:move 1s ease 1 alternate both ;
}
@-webkit-keyframes move{
100%{
-webkit-transform:translate3d(150px,0,0);
transform:translate3d(150px,0,0);
-ms-transform: translate3d(150px,0,0);
}
}

从demo中可知, both的属性是与动画方向(animation-direction)以及动画播放次数(animation-iteration-count)联系起来的,当方向设置为alternate时,次数为奇数次时,动画的停留状态为结束时状态(forwards),反之偶数次时为初始状态(backwards)

translate3d中的参数设置

translate3d是我个人感觉蛮好用的位移动画函数,好像translate在Safari中的支持并不是很好,所以现在做位移动画我一般都用translate3d。但对于该函数参数的认识却一直比较模糊,往往是现做现试,没有一个清晰的认识。
通过一些摸索, 首先可以明确的是该函数的参数是位移的增量设置(我是不会说一开始接触css动画时我曾经用过left,right这种奇蠢无比的方式来设置位置,囧rz), 设置增量的一个好处就是便于维护, 对象的位置与对象的动画无关(当然也就便于我们直接copy代码,哈) 还有一个需要注意的地方就是y轴的参数, 当参数为正的时候时向下运动(并非我们印象中坐标轴的正数向上)
如图:
《CSS中那些微妙模糊的属性》

关于translate3d的详细解读,微软的这篇博客写得很详细,收藏下:
使用 CSS 轉換讓頁面變得更生動

图像遮罩clip属性中rect的参数设置

在做雪碧图的时候有接触过background-position属性,用于显示一个图像的特定位置, 其实还有一个类似的属性也可以实现该效果,就是clip属性, 顾名思义就是图像裁剪,但是初次接触该属性的时候需要注意它的参数设置,它的格式是这样的:clip:rect(top,right,bottom,left); 按顺时针方向设置,继承了css上下左右设置的习惯, 但是要注意的是:rect的四个参数都是以矩形的上边与左边为参考线 也就是说假设一副图像是300*300px的大小, 设置该属性但不裁剪的参数是这样的clip:rect(0 ,300px,300px,0) 因为右边距与底边距的设置同样是以“左边”和“上边”为参考的。
如图:
《CSS中那些微妙模糊的属性》

关于这个属性, 张鑫旭大神的文章还做了个详细的demo,戳这里【CSS clip:rect矩形剪裁功能及一些应用介绍】

CSS3 Transform的perspective属性

关于css 3d变换中的perspective属性,网上很多文章都讨论过,但很多时候越看越糊涂, 比如在张鑫旭大神的这篇博客中(好吧,CSS3 3D transform变换,不过如此!)他将perspective直接翻译为视角, 并且在用词上直接将其说成将视角大小设置为xxx 像素, 这种说法让我一开始对该属性产生不小的疑惑, 自己揣摩之后发现这种说法让我产生了该参数是大小或者说宽高上的错觉, 其实该属性所表示的是距离的值,也就是镜头到元素的距离, 我认为更合适的说法应该是“景深”,它设置的是镜头(或者说人眼)到元素的距离, 比方说一个正方体,它的长宽高都是100px,当其父元素(perspective作用于后代并非元素本身)设置perspective为100px的时候,镜头距离该正方体距离为100px,也就是说镜头贴着正方体表面了(此时perspective等于正方体的长),当perspective参数小雨100px时, 镜头进入正方体内部。另一种情况假设元素是二维的,那么其translateZ属性大于perspective时,元素就在镜头后面了。 如此,将其理解为“景深”我觉得更为契合。
如图:
《CSS中那些微妙模糊的属性》

看过有关perspective相关博客收集在这里(个人觉得第一篇最好):
【HTML5】3D立方体旋转——鼠标/键盘可控旋转方向
理解:translate rotate 与 perspective 暧昧关系
好吧,CSS3 3D transform变换,不过如此!
CSS3 Transform的perspective属性


推荐阅读
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 本文整理了Java中org.apache.solr.common.SolrDocument.setField()方法的一些代码示例,展示了SolrDocum ... [详细]
  • 本文整理了常用的CSS属性及用法,包括背景属性、边框属性、尺寸属性、可伸缩框属性、字体属性和文本属性等,方便开发者查阅和使用。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
author-avatar
互联网控军
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有