- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我最近在我的后端发现了一个编码问题,当第一个字母是日耳曼字母(例如 Ö
和 Ä
)时计算用户的首字母时。这些字母无法解析并最终成为问号。
但我还发现我的标记中有一种相当奇怪的行为(也是我寻求建议的原因),这对我来说根本毫无意义。
我已经复制了下面的简化示例:
ul {
padding: 0;
display: flex;
}
li {
list-style-type: none;
font-family: 'Roboto', sans-serif;
flex-direction: column;
margin: 15px;
width: 260px;
min-height: 200px;
padding: 30px 15px;
text-align: center;
background: white;
border: 1px solid #E8E8E8;
}
.avatar {
height: 35px;
width: 35px;
border: 2px solid #333;
line-height: 35px;
padding: 1px 2px;
align-self: auto;
margin: 10px auto 0;
position: relative;
}
.avatar span {
left: 50%;
position: absolute;
transform: translateX(-50%);
}
<ul>
<li>
<div class="avatar">
<span>?N</span>
</div>
<h4>Örjan Norberg</h4>
<span>orjan@example.com</span>
</li>
<li>
<div class="avatar">
<span>II</span>
</div>
<h4>Isaac Ibarra</h4>
<span>isaac@example.com</span>
</li>
<li>
<div class="avatar">
<span>WW</span>
</div>
<h4>Wyatt Williams</h4>
<span>wyatt@example.com</span>
</li>
</ul>
您会看到“Örjans”的首字母是 ?N
,而且“N”被推到下一行。这似乎与头像宽度无关,因为我尝试了长首字母和短首字母。
事实上,即使我输入 WWWWW
或其他内容 ( pic ) 溢出头像,也没有换行符,这是预期的。我还尝试了其他特殊字符,例如 &
和 %
,但它们的行为与任何其他字符或字母一样。
当专门使用问号时,是什么导致了这种行为?它与字体 ( Roboto) 有某种关系还是我的 css?
此外,(见下图)当问号后面跟着一个字母时,为什么会发生这种情况,但当顺序颠倒(字母在前)或后面跟着另一个问号时却不会发生这种情况?
这是怎么回事??
编辑 1: 使用 OSX/Chrome.v59,但可以在 Windows7/IE11 中复制
编辑 2: 显然 —
字符 also causes this behavior (感谢@MrLister 找到了这个)
最佳答案
您看到的是 ?N
组合的边界客户端矩形太宽,无法在不溢出的情况下容纳,因此浏览器会根据默认情况在看到溢出时执行它应该执行的操作规则和 CSS 覆盖。部分原因是 translate
和 scale
转换不重新定位元素,它们只是将它们绘制到别处,因此您的变换不会抵消您的绝对定位。查看 http://jsbin.com/gujafokiwe/edit?html,css,output 并注意,就 DOM 而言,span 仍处于其原始位置,我们只告诉 CSS 将其绘制到其他位置。
当浏览器看到 ?N
(特别是:某些浏览器。不是所有浏览器)时,它可能会发现它需要根据边界客户端矩形尺寸来断线。然而,浏览器可以自由选择何时以及如何打破文本序列的规则(CSS does not specify 哪些规则必须被使用,只有对于 CJK 之外的 unicode 内容,建议使用 http://www.unicode.org/reports/tr14/tr14-37.html )并且同时您的示例在我的 Firefox 中运行良好,根本没有破坏文本,我的 Chrome 确实看到了溢出,并且确实尽可能地尝试分解序列。
不幸的是,关于为什么这样做的唯一真实答案是在文本渲染引擎的代码中——要么在 Blink 中,要么在 Webkit 中,它们(大部分)都是开源的,所以除非你碰巧在这个问题上得到了实现它的人的注意,否则你将不得不寻找他们而不是希望他们浏览 Stackoverflow 并找到你的问题:你最好的选择是通读 http://www.chromium.org/blink#participating 和然后将这个问题发布到他们的开发邮件列表。
(针对您的问题的解决方案多种多样:删除 .avatar span
规则,仅使用 text-align: center
父 div,或者更好:使用 flexbox 规则)
关于html - 特殊字符的奇怪换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44846115/
我有这种来自 Google map 自动完成的奇怪行为(或者我可能错过了某事)...想法?奇怪的: 您在输入中输入某物,例如“伦敦” 您按 [ENTER] 你按下 [CLEAR] 按钮 你点击进入'输
这段代码与《Learning Java》(Oracle Press Books)一书中的代码完全一样,但它不起作用。我不明白为什么它不起作用,它应该起作用。我用 OpenJDK 和 Sun JDK 7
示例 1 中究竟发生了什么?这是如何解析的? # doesnt split on , [String]::Join(",",("aaaaa,aaaaa,aaaaa,aaaaa,aaaaa,aa
我需要获得方程式系统的解决方案。为此,我使用函数sgesv_()。 一切都很好,它使我感到解决方案的正确结果。 但是我得到一个奇怪的警告。 警告:从不兼容的指针类型传递'sgesv_'的参数3 我正在
我目前在制作动画时遇到一个奇怪的问题: [UIView animateWithDuration:3 delay:0
alert('works'); $(window).load(function () { alert('does not work'); });
我的代码: public class MyTest { public class StringSorter implements Comparator { public
我正在学习 JavaScript。尝试理解代码, function foo (){ var a = b = {name: 'Hai'}; document.write(a.name +''
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
这按预期工作: [dgorur@ted ~]$ env -i env [dgorur@ted ~]$ 这样做: [dgorur@ted ~]$ env -i which date which: no
struct BLA { int size_; int size()const{ return size_; } } int x; BLA b[ 2 ]; BLA * p = &b[
我有以下代码: #test img {vertical-align: middle;} div#test { border: 1px solid green; height: 150px; li
我想大多数使用过 C/C++ 的人都对预处理器的工作原理有一定的直觉(或多或少)。直到今天我也是这么认为的,但事实证明我的直觉是错误的。故事是这样的: 今天我尝试了一些东西,但我无法解释结果。首先考虑
我想为 TnSettings 做 mock,是的,如果通过以下方法编写代码,它就可以工作,问题是我们需要为每个案例编写 mock 代码,如果我们只 mock 一次然后执行多个案例,那么第二个将报告异常
我的项目中有以下两个结构 typedef volatile struct { unsigned char rx_buf[MAX_UART_BUF]; //Input buffer over U
Regex rx = new Regex(@"[+-]"); string[] substrings = rx.Split(expression); expression = "-9a3dcb
我的两个应用程序遇到了一个奇怪的问题。这是设置: 两个 tomcat/java 应用程序,在同一个网络中运行,连接到相同的 MS-SQL-Server。一个应用程序,恰好按顺序位于 DMZ 中可从互联
我目前正在与 Android Api Lvl 8 上的 OnLongClickListener 作斗争。 拿这段代码: this.webView.setOnLongClickListener(new
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
只是遇到了奇怪的事情。我有以下代码: -(void)ImageDownloadCompleat { [self performSelectorOnMainThread:@selector(up
我是一名优秀的程序员,十分优秀!