惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
G
Google Developers Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
腾讯CDC
有赞技术团队
有赞技术团队
Vercel News
Vercel News
MongoDB | Blog
MongoDB | Blog
M
MIT News - Artificial intelligence
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
B
Blog RSS Feed
I
InfoQ
Blog — PlanetScale
Blog — PlanetScale
博客园_首页
The Cloudflare Blog
B
Blog
C
Check Point Blog
Stack Overflow Blog
Stack Overflow Blog
IT之家
IT之家
U
Unit 42
D
Docker
月光博客
月光博客
aimingoo的专栏
aimingoo的专栏
博客园 - Franky
A
About on SuperTechFans

张鑫旭-鑫空间-鑫生活

1分钟速度了解text-align match-parent声明 « 张鑫旭-鑫空间-鑫生活 光标的形状也能设置了,就是CSS caret-shape属性 « 张鑫旭-鑫空间-鑫生活 pretext与文字四面环绕效果的实现 « 张鑫旭-鑫空间-鑫生活 JSON.rawJSON方法的作用是什么? « 张鑫旭-鑫空间-鑫生活 如何使用CSS判断鼠标从哪个方向进入元素? « 张鑫旭-鑫空间-鑫生活 借助mediabunny纯JS实现视频水印、剪裁、合成等功能 « 张鑫旭-鑫空间-鑫生活 务必谨慎使用JS WeakRef弱引用 « 张鑫旭-鑫空间-鑫生活 CSS六边形头像的实现与蜂巢布局 « 张鑫旭-鑫空间-鑫生活 CSS corner-shape与背景底纹技术 « 张鑫旭-鑫空间-鑫生活 浅学WebTransport API:下一代Web双向通信技术 « 张鑫旭-鑫空间-鑫生活 HTML dialog元素新支持了closedBy属性 « 张鑫旭-鑫空间-鑫生活 HTML interestfor属性与悬停popover交互效果 « 张鑫旭-鑫空间-鑫生活 CSS3模拟window7炫酷界面效果展示 « 张鑫旭-鑫空间-鑫生活 图片旋转+剪裁js插件(兼容各浏览器) « 张鑫旭-鑫空间-鑫生活 纯js无图片无外链CSS图片幻灯片播放插件 « 张鑫旭-鑫空间-鑫生活 CSS border三角、圆角图形生成技术简介 « 张鑫旭-鑫空间-鑫生活 CSS “渐进增强”在web制作中常见应用举例 « 张鑫旭-鑫空间-鑫生活 让IE6/IE7/IE8浏览器支持CSS3属性 « 张鑫旭-鑫空间-鑫生活 jQuery – 高亮动态显示页面HTML代码插件 « 张鑫旭-鑫空间-鑫生活 翻译 – 逐渐消失的Flash网站 « 张鑫旭-鑫空间-鑫生活 CSS reset的重新审视 – 避免样式重置 « 张鑫旭-鑫空间-鑫生活 新浪微博插入话题后部分文字选中的js实现 « 张鑫旭-鑫空间-鑫生活 JavaScript实现http地址自动检测并添加URL链接 « 张鑫旭-鑫空间-鑫生活 CSS实现兼容性的渐变背景(gradient)效果 « 张鑫旭-鑫空间-鑫生活 CSS content内容生成技术以及应用 « 张鑫旭-鑫空间-鑫生活 CSS gradient渐变之webkit核心浏览器下的使用 « 张鑫旭-鑫空间-鑫生活 CSS渐变之CSS3 gradient在Firefox3.6下的使用 « 张鑫旭-鑫空间-鑫生活 区分IE8/IE7/IE6及其他浏览器-CSS “\9″hack « 张鑫旭-鑫空间-鑫生活 CSS实现跨浏览器兼容性的盒阴影效果 « 张鑫旭-鑫空间-鑫生活 CSS3&HTML5各浏览器支持情况一览表 « 张鑫旭-鑫空间-鑫生活
有人考了我一道CSS题目 « 张鑫旭-鑫空间-鑫生活
张鑫旭,zhangxinxu · 2018-10-21 · via 张鑫旭-鑫空间-鑫生活

这篇文章发布于 2018年10月21日,星期日,21:22,归类于 CSS相关。 阅读 63333 次, 今日 12 次 20 条评论

by zhangxinxu from https://www.zhangxinxu.com/wordpress/?p=8097
本文可全文转载,无需授权,只要保留原作者、出处以及文中链接即可。

一、有人考了我一道CSS题目

前段时间@快叫我韩大人私信我考了我下面这个题目:

题目

截图中的字略小,我重新整理了下:

题目要求:

  1. P标签的最大宽度不可以大于H2标签文字宽度的10%

    这里应该是P标签的最大宽度由前面的匿名内联元素宽度(就是大字号文字宽度)决定,可参见最后期望效果GIF示意。

  2. H2标签不能失去高度(h2 文字高度+p 标签高度 = h2 标签高度)

HTML结构(不允许修改)

<h2>
IPHONE XR<br>
IS THE FUCKING<br>
BEST EVER MADE
<p>iPhone XR has not been authorized as required by the rules of the Federal Communications Commission. iPhone XR is not, and may not be, offered for sale or lease, or sold or leased, until authorization is obtained.</p>
</h2>

基础CSS样式

h2{
    font-size: 52px;
    font-weight: bold;
    color: #000;
}
p{
    font-size: 12px;
    color: #333;
}

初始效果

初始GIF效果

期望效果

预期效果gif截图

请问在座的各位有没有实现思路,可以将对应CSS代码写在这个在线demo页面的(Chrome浏览器打开)“你的CSS”区域,可以看到实时效果:

输入你的CSS代码到“你的CSS”


大家现在可以开动脑筋想想怎么实现了……
·
·
·
·
·
·
如果没有思路,或者想看看别人的实现,可以接续往下看。

二、几个布局实现方法

先展示下我的实现:

h2 {
    width: min-content;
    white-space: nowrap;
}
p {
    white-space: normal;
}

您可以狠狠地点击这里:min-content下的布局实现demo

效果如下截图:

min-content下的布局效果截图

width:min-content表示宽度收缩到最小,如果是默认状态,宽度应该是最窄单词的宽度,由于设置了white-space:nowrap,因此,宽度就是最长的那一行字符宽度(如果不太理解,可以买本《CSS世界》,内有深入讲解),由于P标签设置了white-space:normal,因此,最终宽度就是大字号标题的最长的那一行的宽度,最终实现预期效果。如果对min-content还不太了解,可以参见“理解CSS3 max/min-content及fit-content等width值”这篇文章。


下面这个是出题人的实现:

h2 {
    display: table;
}
p {
    display: table-caption;
    caption-side: bottom;
}

您可以狠狠地点击这里:min-content下的布局实现demo

效果如下截图:

min-content下的布局效果截图

这个方法要更好,兼容性更强(IE8+)。

display:table-caption表示元素的display水平表现为表格标题,自动自适应于外部表格容器宽度,caption-side:bottom可以设置表格标题在底部,而display:table元素的宽度为auto的时候表现为“包裹性”(“shrink-to-fit”),因此,达到符合预期的效果。

三、欢迎补充你的实现方法

CSS各种属性就像构成世界的基本元素,要实现某一种效果,往往会有多种组合方式,各有优劣,相信这里的布局实现也会有其他方法的,欢迎补充,不吝赐教。

当然,如果你有自认为不错的CSS技巧,也欢迎和我交流,出题考我也是可以的!

考我CSS题目

本文为原创文章,会经常更新知识点以及修正一些错误,因此转载请保留原出处,方便溯源,避免陈旧错误知识的误导,同时有更好的阅读体验。
本文地址:https://www.zhangxinxu.com/wordpress/?p=8097

(本篇完)