掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 430|回复: 3

[讨论] CSS规范缺陷?无法设置本元素换行而后面元素不换行?

[复制链接]
  • TA的每日心情
    擦汗
    2020-7-3 13:51
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    发表于 2020-6-19 10:55:26 | 显示全部楼层 |阅读模式
    3 g+ J1 k- T( Y; Y9 H* N4 N* ^
    <span id="1">A</span>
    8 e" @. ~# W9 o  h3 J6 m<span id="2">B</span>6 W, H1 Q. A. F; [
    <span id="3">C</span>4 }+ F- u! q. \4 u
    <span id="4">D</span># S1 _; w: N" |2 x9 N- p- ^- t
    <span id="5">E</span>
    ( G% r! o& J: f<span id="6">F</span>
      k: k/ _" v& M) R<span id="7">G</span>4 G! ^9 n4 r4 p% }% o
    <span id="8">H</span>
    ) {& f; ]5 T* i& O& g; ~: K<span id="9">I</span>
    # v, t) X# G9 y) Y5 _% b) }" B& X1 q: b# q, H
    对于上面这个HTML,想显示成如下效果:
    ! ~1 S8 U; X( j5 NABC- x, w: R1 Q1 P8 B5 s6 P0 t
    DEF
    % x) I( |9 f( KGHI2 _; B& X/ l3 l4 H0 F# \
    在CSS中应该如何设置呢?这个小例子是对词库排版时经常可以遇到的问题。
    ; l9 ?0 t# ~7 g/ \  L0 ^0 H: r
    4 J6 s1 i& C7 c9 L/ ^要想让<span id="4">D</span>相对于前面内容换行,它自己就必须设置成block(不能靠前面的id="3"标签设置成block来实现,否则id="3"标签就与id="2"标签不在同一行了);而后面id="5"要与id="4"同行,id="4"又必须设置成inline —— 这正好是矛盾的,无法实现。
      u' X6 D+ e3 }$ O
    0 b2 R$ l. u1 S7 \8 C" gCSS规范似乎只能设置某标签是否独占一行,而缺少换行方面的设置机制:如果想对某标签的内容相对于前面标签内容是否换行显示的设置,仅仅影响本标签自己,至于本标签后面的标签相对于本标签是否换行完全由后面标签自己来设置而不受前面本标签样式的影响 —— 这是达不到的?!2 Y2 w3 }) N6 t# ^
    ! v$ ?9 O4 x  D
    不知现有规范有何方案能达到以上目的?
    8 D" m1 O# |( A" j9 k, F  I4 {4 Q- O

    ( u$ l: M- v# K3 |0 n3 C- ]9 U9 n

    / I) `+ r2 w% k/ _" X1 {
  • TA的每日心情
    慵懒
    2021-9-28 14:33
  • 签到天数: 158 天

    [LV.7]常住居民III

    发表于 2020-6-19 11:58:16 | 显示全部楼层
    本帖最后由 atauzki 于 2020-6-19 12:02 编辑
    0 k" o" D; F6 T8 h1 K  V- n8 Y  ]3 f5 Z5 p6 W
    Chrome测试通过, 参考文章:https://developer.mozilla.org/zh-CN/docs/Web/CSS/:nth-of-type
    " [- L+ `" B' J2 ~/ e  D: W4 K) H& L+ E! D
    1. <!doctype html>+ d; ]2 t  ?- q. J# i
    2. <head>
      / c/ G# m3 a5 N4 K5 P$ e8 M( |  s
    3.   <style>7 i: |  G& s* g& Y( y3 @6 m5 U; f( G
    4.   .main>span:nth-of-type(3n):after{content:"\A";display:block}
      , J- u8 V8 c2 P4 z
    5.   </style>
      8 Q4 t: u5 c2 A1 }$ a& T) d( P
    6. </head>6 I5 {7 T4 F6 @5 X7 Y
    7. <body>6 ^7 ], W3 c& _, l0 d, G4 [
    8.   <div class="main">9 }* A& W+ g6 z
    9.     <span id="1">A</span>
      2 I* X- J/ Q: s
    10.     <span id="2">B</span>: S, N# R+ X0 ]) _( A, r. `( q
    11.     <span id="3">C</span>, b! U8 ^/ _' p" I/ f+ M* |, s; F
    12.     <span id="4">D</span>
      6 B1 \& U/ }0 |' }  [6 Z) H! U3 p
    13.     <span id="5">E</span>
      6 v  G# z3 `( ]# o( }! \* ]; z
    14.     <span id="6">F</span>
      . ~$ M4 O/ y6 k" ?, t9 S! ?
    15.     <span id="7">G</span>+ s  P' |; L9 c( s7 O
    16.     <span id="8">H</span>
      . C* }! _, o' R# J& J! M% A% r
    17.     <span id="9">I</span>, p: s3 U/ n1 i1 r0 R4 U- O$ [/ I
    18.   </div>4 `7 M$ A* h6 l9 {6 Z6 F
    19. </body>
    复制代码
  • TA的每日心情
    开心
    2019-1-18 23:55
  • 签到天数: 230 天

    [LV.7]常住居民III

    发表于 2020-6-19 19:31:55 | 显示全部楼层
    利用伪元素,插入一段空的block即可。6 z8 r  @6 D+ x& F7 C; I3 P
    #3::after {content:''; display: block;}
  • TA的每日心情
    擦汗
    2020-7-3 13:51
  • 签到天数: 19 天

    [LV.4]偶尔看看III

     楼主| 发表于 2020-6-21 09:02:45 | 显示全部楼层
    问题得到解决了。多谢atauzki dfliaoyue两位好心人!
    3 E4 A/ y* B$ O; o9 y9 B, T: Q7 ]怎么都还是感觉CSS应该推出一个正式的样式专门解决这个问题,而不要用伪类这种间接的方法实现。
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2024-4-26 16:04 , Processed in 0.065136 second(s), 8 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

    快速回复 返回顶部 返回列表