不能换行 俄语 前端h5_li inside-block在IE11换行无效的原因

近日在做一个网页标签列表,要求不能换行,一开始以为比较容易,三两下就把代码写完了,并且在Firefox和Chrome浏览器测试通过,不过,在IE11一看,却出人意料的没有达到预期效果,li inside-block 在IE11里竟然无效!照样换行!

li inside-block在IE11照样换行?

li inside-block 在IE11照样换行!为何无效?难道代码还要hack一下IE11?但我看别人网站里的写法并没有hack IE11。

其实代码挺简单,在Chrome和Firefox浏览器完全达到预期效果。

css核心代码如下:ul li{

display:inline-block;

padding:3px 4px 3px 4px;

margin:3px 3px 3px 0px;

}

使用 display:inline-block 可设置 li 列举不换行。

html核心代码如下:

  • tag1
  • tag2
  • tag3

出来的效果应该是这样:

使用 display:inline-block 可设置 li 列举不换行

而不是这样:

无 display:inline-block 时 li 列举换行

在京东网页html代码找到IE11无效的原因

上述问题困扰了我好几天,一度放弃了 li 列举的这种代码方式而采用 div 的写法,但是还是心有不甘,因为 li 的写法才是正道,且代码更加简洁。

今天在京东网浏览手机,侧栏的标签列表吸引了我,通过查看其网页html源码,发现它也是用 li 列举使用 display:inline-block 来实现的。

京东的标签列表

我决意一定要从京东的这张网页上找到同时适用IE11的标签列表代码。

一刻不能再等了,立即动手。

在本地搭建的调试环境新建一html文件,把京东网页的html源码复制过来,接着采用“排除法”逐步删减代码,直至最后只剩下这个标签列举的DIV。

通过一段时间的代码删减工作,最后剩下的代码越来越少,答案也应该越来越明朗了。

功夫不负有心人,最后终于找到了答案!困扰多天的问题终于得以解决了!

原来是网页

里需要加入这句:

这句话的意思是,该网页不使用IE兼容性视图。

IE兼容性视图是使用低版本的IE浏览器来渲染网页,以免网页布局产生错乱,但现在我们明白了,兼容性视图会抹杀某些样式,使网页某些区块的布局不能达到预期效果。因此,在设计网页的时候,我们应该告诉IE浏览器不要使用兼容性视图来渲染此网页。

### 回答1: 在reportlab中,可以使用reportlab.lib.styles.ParagraphStyle来设置俄语的字符间距。 示例代码如下: ```python from reportlab.lib.styles import ParagraphStyle # 创建一个新的段落样式 style = ParagraphStyle(name='Russian') # 设置字符间距 style.wordWrap = 'CJK' # 使用该样式绘制文本 text = "这是一段俄语文本" para = Paragraph(text, style) ``` 请注意: ReportLab内置的中文字符间距设置为CJK,而俄语的字符间距设置为CJK,请根据实际情况进行设置。 ### 回答2: 在reportlab中,要设置俄语的字符间距,可以通过FontMetrics类中的CharMetrics属性来实现。首先,需要使用registerFont()函数将俄语字体注册到reportlab中。 ``` from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.ttfonts import TTFont # 注册俄语字体 pdfmetrics.registerFont(TTFont('RussianFont', 'Russian.ttf')) ``` 接下来,可以使用setFont()函数将所需的俄语字体设置为当前字体。然后,可以使用FontMetrics类的CharMetrics属性来获取字符间距。设置字符间距的方法有两种:通过修改字体的字符间距值或者通过修改字符串中每个字符的间距。 1. 修改字体的字符间距值: ``` from reportlab.pdfbase import pdfmetrics from reportlab.lib.fonts import addMapping from reportlab.pdfbase.pdfmetrics import registerFontFamily from reportlab.pdfbase.ttfonts import TTFont from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle # 注册俄语字体 pdfmetrics.registerFont(TTFont('RussianFont', 'Russian.ttf')) # 创建样式 styles = getSampleStyleSheet() custom_style = ParagraphStyle('CustomStyle', parent=styles['Normal']) custom_style.fontName = 'RussianFont' # 设置字体间距 pdfmetrics.getRegisteredFontFace('RussianFont').characterSpacing = 2 # 应用自定义样式 custom_text = '<font size=12>Привет мир!</font>' custom_paragraph = Paragraph(custom_text, custom_style) ``` 2. 修改每个字符的间距: ``` from reportlab.pdfbase import pdfmetrics from reportlab.lib.fonts import addMapping from reportlab.pdfbase.pdfmetrics import registerFontFamily from reportlab.pdfbase.ttfonts import TTFont from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle # 注册俄语字体 pdfmetrics.registerFont(TTFont('RussianFont', 'Russian.ttf')) # 创建样式 styles = getSampleStyleSheet() custom_style = ParagraphStyle('CustomStyle', parent=styles['Normal']) custom_style.fontName = 'RussianFont' # 设置字符间距 custom_style.spaceBefore = 5 # 设置段前间距 custom_style.spaceAfter = 5 # 设置段后间距 # 应用自定义样式 custom_text = '<font size=12>Привет мир!</font>' custom_paragraph = Paragraph(custom_text, custom_style) ``` 以上就是在reportlab中设置俄语字符间距的方法。可以根据实际情况选择合适的方式来设置字符间距。 ### 回答3: 在reportlab中,要设置俄语的字符间距,可以使用`setFont`函数来设置字体,并使用`setCharSpace`函数来调整字符间距。下面是一个示例代码: ```python from reportlab.pdfgen import canvas # 创建一个PDF文件 c = canvas.Canvas("russian_text.pdf") # 设置字体为俄语字体,并设置字符间距 font_name = "Helvetica" font_size = 12 char_space = 1.2 # 字符间距(可以根据需要进行调整) c.setFont(font_name, font_size) c.setCharSpace(char_space) # 输入俄语文本 russian_text = "Привет, мир!" # 俄语文本 # 在PDF中绘制俄语文本 c.drawString(100, 100, russian_text) # 保存并关闭PDF文件 c.save() ``` 在上述示例中,我们首先导入了`canvas`模块,然后创建了一个PDF文件`russian_text.pdf`。之后,我们设置了字体为俄语字体(可以根据需要选择其他俄语字体),并通过`setCharSpace`函数来设置字符间距。接下来,我们输入了俄语文本,并通过`drawString`函数在指定位置绘制俄语文本。最后,我们保存并关闭了PDF文件。 你可以根据需要调整字体、字符间距和文本绘制的位置来满足你的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值