-
Notifications
You must be signed in to change notification settings - Fork 791
Expand file tree
/
Copy pathchanges.src
More file actions
8642 lines (6377 loc) · 319 KB
/
changes.src
File metadata and controls
8642 lines (6377 loc) · 319 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<!-- $Id: changes.src,v 2.176 2014-01-17 13:48:59 bbos Exp $ -->
<HEAD>
<TITLE>Changes</TITLE>
<!--script src="http://www.w3c-test.org/css/harness/annotate.js#CSS21_DEV" type="text/javascript" defer></script-->
</HEAD>
<BODY>
<H1>Changes</H1>
<P><em>This appendix is informative, not normative.</em></P>
<P>CSS 2.1 is an updated revision of CSS2. The changes between
the CSS2 specification (see [[CSS2]]) and this specification fall into
five groups: <a href="#known-errors">known errors,</a> typographical
errors, <a href="#clarifications">clarifications,</a> <a
href="#changes">changes</a> and <a href="#new">additions.</a>
Typographical errors are not listed here.</P>
<p>In addition, this chapter lists the <a href="#errata">errata
(part 1</a> and <a href="#errata2">part 2)</a>
that were subsequently applied to CSS 2.1 since it became a
Candidate Recommendation in July 2007.
<p>This chapter is not a complete list of changes. Minor editorial
changes and most changes to examples are also not listed here.</p>
<h2><a name="new">Additional property values</a></h2>
<h3 id="a4.3.6"><a href="syndata.html#color-units">Section 4.3.6
Colors</a></h3>
<p>New color value: 'orange'
<h3 id="a9.2.4"><a href="visuren.html#propdef-display">Section 9.2.4
The 'display' property</a></h3>
<p>New 'display' value: 'inline-block'
<h3 id="a12.2"><a href="generate.html#content">Section 12.2 The
'content' property</a></h3>
<p>New 'content' values 'none' and 'normal'. (The values 'none' and
'normal' are equivalent in CSS 2.1, but may have different
functions in CSS3.)
<h3 id="a16.6"><a href="text.html#propdef-white-space">Section 16.6
White space: the 'white-space' property</a></h3>
<p>New 'white-space' values: 'pre-wrap' and 'pre-line'
<h3 id="a18.1"><a href="ui.html#propdef-cursor">Section 18.1 Cursors:
the 'cursor' property</a></h3>
<p>New 'cursor' value: 'progress'
<h2><a name="changes">Changes</a></h2>
<h3 id="c1.1"><a href="about.html#css2.1-v-css2">Section 1.1 CSS 2.1 vs CSS 2</a></h3>
<p>This new section is added to explain the motivation for CSS2.1
and its relation to CSS2.</p>
<h3 id="c1.2"><a href="about.html#reading">Section 1.2 Reading the specification</a></h3>
<p>This section (formerly Section 1.1) has been marked non-normative.</p>
<h3 id="c1.3"><a href="about.html#organization">Section 1.3 How the specification is organized</a></h3>
<p>This section (formerly Section 1.2) has been marked non-normative.</p>
<h3 id="c1.4.2.1"><a href="about.html#value-defs">Section 1.4.2.1 Value</a></h3>
<p>This section (formerly unnumbered under 1.3.2) notes that value types are specified
in terms of tokens and that spaces may appear between tokens in values. A note
explains that spaces are required between some tokens.</p>
<h3 id="c1.4.2.6"><a href="about.html#media-applies">Section 1.4.2.6 Media groups</a></h3>
<p>This section (formerly unnumbered under 1.3.2) now declares the Media line
in property definitions to be non-normative.</p>
<h3 id="c1.4.2.7"><a href="about.html#computed-defs">Section 1.4.2.7 Computed value</a></h3>
<p>A new line is added to each property definition specifying what the computed
values are for the property. (This defines what level of computation is done to
a property value before inheritance and before certain other calculations.)</p>
<h3 id="c1.4.4"><a href="about.html#notes-and-examples">Section 1.4.4 Notes and examples</a></h3>
<p>This section (formerly 1.3.4) now specifies that HTML examples lacking DOCTYPE
declarations are SGML Text Entities conforming to the HTML 4.01 Strict DTD [HTML4].
The markup for many examples has been reformulated to either include a DOCTYPE or
conform to this definition.</p>
<h3 id="c1.5"><a href="about.html#acknowledgements">Section 1.5 Acknowledgments</a></h3>
<p>This section (formerly 1.4) has been updated to reflect contributions to CSS2.1
and has been marked non-normative.<p>
<h3 id="c3.2"><a href="conform.html#conformance">Section 3.2
Conformance</a></h3>
<p>Support for user style sheets is now required (in most cases),
rather than just recommended.
<p>Support for turning of author style sheets is now required.</p>
<p>Application of CSS properties to form controls is explicitly undefined.
Authors are recommended to treat form control styling capabilities in UAs
as experimental.</p>
<h3 id="c3.3"><a href="conform.html#errors">Section 3.3
Error Conditions</a></h3>
<p>This section changed to say that error handling <em>is</em> specified
in most cases.</p>
<h3 id="c4.1.1"><a href="syndata.html#tokenization">Section 4.1.1 Tokenization</a></h3>
<p>Added INVALID token and rules for its definition.</p>
<p>An optional hyphen, "-", is now allowed at the beginning of an "ident"
for vendor extensions. (See section 4.1.2.1)</p>
<p id="underscore">The underscore character
("_") is allowed in identifiers. The definitions of the lexical
macros "nmstart" and "nmchar" now include it. See also section
4.1.2.1 (Vendor extensions).</p>
<p>The "escape" macro has been modified to allow the escaping of any
character except newlines, form feeds, and hex digits (to avoid
conflict with Unicode escapes).</p>
<p>Modified "string1" and "string2" macros by defining allowed characters
through excluding disallowed characters. This allows invisible ASCII
characters to be included in a string.</p>
<h3 id="c4.1.3"><a href="syndata.html#characters">Section 4.1.3
Characters and case</a></h3>
<p>Updated prose about identifiers (second bullet point) to match changes
in the tokenization (above).</p>
<p>Excluded null (0x0) character from CSS numerical escapes and indicate that
it is undefined in CSS2.1 what happens if such a character is encountered.</p>
<p>Allowed the use of U+FFFD as a replacement for characters outside the
range allowed by Unicode.</p>
<p>CSS is no longer case-insensitive, but case-sensitive with
exceptions. Changed "All CSS style sheets are case-insensitive, except
for parts that are not under the control of CSS" to "All CSS syntax is
case-insensitive within the ASCII range (i.e., [a-z] and [A-Z] are
equivalent), except for parts that are not under the control of CSS."
See also the change to case-sensitivity of counters in <a
href="#c4.3.5">4.3.5.</a>
<h3 id="c4.2"><a href="syndata.html#parsing-errors">Section 4.2
Rules for handling parsing errors</a></h3>
<p>Defined parsing in the cases of Malformed Declarations,
Unexpected End of Stylesheet, and Unexpected End of String.</p>
<h3 id="c4.3"><a href="syndata.html#values">Section 4.3
Values</a></h3>
<p>Sections 4.3.7 (Angles), 4.3.8 (Times), and 4.3.9 (Frequencies)
have been moved to the informative Appendix A.</p>
<h3 id="c4.3.2"><a href="syndata.html#length-units">Section 4.3.2
Lengths</a></h3>
<p>Added a paragraph on heuristics for finding the x-height of a font.</p>
<h3 id="c4.3.4"><a href="syndata.html#uri">Section 4.3.4
URLs and URIs</a></h3>
<p>Updated URI references to RFC3986.</p>
<h3 id="c4.3.5"><a href="syndata.html#counter">Section 4.3.5
Counters</a></h3>
<p>Changed "Counters are denoted by identifiers" to "Counters are
denoted by <ins>case-sensitive</ins> identifiers" (see also the
change to case-sensitivity in <a href="#c4.1.3">4.1.3</a>).
<h3 id="c4.3.6"><a href="syndata.html#color-units">Section 4.3.6
Colors</a></h3>
<p>Defined the numeric values corresponding to color keywords instead
of referencing HTML4 for those values.</p>
<p>UAs are now allowed to intelligently map colors outside the gamut
into the gamut instead of simply clipping them into the range of the
gamut.</p>
<h3 id="c4.3.8"><a href="syndata.html#unsupported-values">Section 4.3.8
Unsupported Values</a></h3>
<p>Added this section to recommend that unsupported properties and values
be ignored as if they were invalid.</p>
<h3 id="c4.4"><a href="syndata.html#charset">Section 4.4
CSS style sheet representation</a></h3>
<p>Changed character encoding detection rule 2 to include a BOM and
referred to additional rules below.</p>
<p>Added rule 4 to provide for use of the referring style sheet
or document's character encoding.</p>
<p>Added rule 5 to require falling back to UTF-8.</p>
<p>Removed the restriction on using @charset in embedded style sheets.</p>
<p>Allowed a BOM to precede the @charset rule.</p>
<p>Added requirement that @charset rule must be a literal '@charset"...";',
not a CSS-syntax equivalent.</p>
<p>Added requirement to support for UTF-8 at minimum.</p>
<p>Specified that any @charset rule not at the beginning of the style sheet
must be ignored.</p>
<p>Removed note on theoretical problem with @charset problem and precisely
defined rules for character encoding detection based on @charset and/or BOM.</p>
<p>Specified that UAs must ignore style sheets in unknown encodings.</p>
<!-- Chapter 5 -->
<h3 id="c5.8.1"><a href="selector.html#matching-attrs">Section 5.8.1 Matching
attributes and attribute values</a></h3>
<p>BCP 47 replaces RFC 1766.
<h3 id="c5.8.3"><a href="selector.html#class-html">Section 5.8.3 Class
selectors</a></h3>
<p>Class selectors are allowed for other formats than HTML.
<p>Added a note about matching classes in formats with multiple class
attributes per element. The behavior is non-normative, because, at the
time of writing, there exist no such formats.
<h3 id="c5.9"><a href="selector.html#id-selectors">Section 5.9 ID
selectors</a></h3>
<p>Specified how to match elements with two or more ID attributes.
<h3 id="c5.10"><a href="selector.html#pseudo-elements">Section 5.10
Pseudo-elements and pseudo-classes</a></h3>
<p>Removed exception for HTML UAs that allowed them (and only them) to
ignore ':first-letter' and ':first-line'.
<h3 id="c5.11.2"><a href="selector.html#link-pseudo-classes">Section 5.11.2
The link pseudo-classes: :link and :visited</a></h3>
<p>UAs may return a :visited link to :link status at some point. (This
was previously a note, but is now normative.)
<p>Added a note about privacy concerns with link pseudo classes and
allowed UAs to treat :visited as :link.
<h3 id="c5.11.4"><a href="selector.html#lang">Section 5.11.4 The
language pseudo-class: :lang</a></h3>
<p>The identifier C in ':lang(C)' need not be a valid language code,
but it must not be empty.
<h3 id="c5.12.1"><a href="selector.html#first-line-pseudo">Section
5.12.1 The :first-line pseudo-element</a></h3>
<p>':first-line' also applies to inline blocks, table captions and
table cells. Added a definition of "first formatted line" to make the
rules about which line is the first line more precise.
<p>UAs are no longer forbidden from applying more properties than the
given list.
<h3 id="c5.12.2"><a href="selector.html#first-letter">Section 5.12.2
The :first-letter pseudo-element</a></h3>
<p>More precise definition of first letter. Added rules for cases
where the first letter is in an inline block or table cell. Added
rules for cases when preceding punctuation is in a different element
from the first letter itself.
<p>UAs may apply other properties to first letters than the given
list.
<p>Unicode character classes Pi and Pf added to the definition of
punctuation.
<!-- Chapter 6 -->
<h3 id="c6.1"><a href="cascade.html#value-stages">Section 6.1 Specified, computed, and actual values</a></h3>
<p>Redefined "computed value" and created the concept of "used value"
so that inheritance can be performed without laying out the document.
This change has the effect of allowing (requiring) percentages to be inherited
as percentages and affects many other layout calculations throughout the spec.</p>
<p>Since computed value of a property can now also be a percentage. In
particular, the following properties now inherit the percentage if the
specified value is a percentage:
<ul>
<li>background-position
<li>bottom, left, right, top
<li>height, width
<li>margin-bottom, margin-left, margin-right, margin-top,
<li>min-height, min-width
<li>padding-bottom, padding-left, padding-right, padding-top
<li>text-indent
</ul>
<p>Note that only 'text-indent' inherits by default, the others only
inherit if the 'inherit' keyword is specified.
<h3 id="c6.4.1"><a href="cascade.html#cascading-order">Section 6.4.1 Cascading order</a></h3>
<p>Changed suggestion that user be able to turn off author styles to a requirement.</p>
<h3 id="c6.4.3"><a href="cascade.html#specificity">Section 6.4.3
Calculating a selector's specificity</a></h3>
<p>The "style" attribute now has a higher specificity than any style
rule.</p>
<p>Pseudo-elements are now counted with elements in calculating a
a selector's specificity.</p>
<h3 id="c6.4.4"><a href="cascade.html#preshint">Section 6.4.4 Precedence
of non-CSS presentational hints</a></h3>
<p>"Non-CSS presentational hints" no longer exist, with the exception
of a small set of attributes in HTML.</p>
<h3 id="c7.3"><a href="media.html#media-types">Section 7.3
Recognized Media Types</a></h3>
<p>Added 'speech' media type.</p>
<p>Marked "Media" field in property descriptions informative.</p>
<h3 id="c7.3.1"><a href="media.html#media-types">Section 7.3.1
Media Groups</a></h3>
<p>Marked this section informative.</p>
<p>Added sound to 'handheld' in media type/media group table.</p>
<p>Changed 'tactile' to be both 'static' and 'interactive'.</p>
<h3 id="c8.3"><a href="box.html#margin-properties">Section 8.3 Margin properties</a></h3>
<p>If the containing block's width depends on an element with percentage
margins, then the resulting layout is undefined in CSS 2.1.</p>
<h3 id="c8.3.1"><a href="box.html#collapsing-margins">Section 8.3.1 Collapsing margins</a></h3>
<p>In the definition of "collapsing margins", added "non-empty content"
and "clearance" to the parenthetical list of things that prevent consecutive
margins from being adjoining.</p>
<p>Vertical margins of elements with 'overflow' other than 'visible' no longer
collapse with their in-flow children.</p>
<p>Defined how margins collapse through an element with adjoining top and
bottom margins.</p>
<p>Added that margins of the root element's box do not collapse.</p>
<p>More rigorously <a href="box.html#what-is-adjoining">defined "adjoining" for margin collapsing</a>.</p>
<p>Sixth bullet, second sub-bullet: to find the position of the top
border edge, assume the element has a <em>bottom</em> (rather than
top) border.
<p>Margins of relatively positioned elements <em>do</em> sometimes
collapse.
<h3 id="c8.4"><a href="box.html#padding-properties">Section 8.4 Padding properties</a></h3>
<p>If the containing block's width depends on an element with percentage
padding, then the resulting layout is undefined in CSS 2.1.</p>
<h3 id="c8.5.2"><a href="box.html#border-color-properties">Section 8.5.2 Border color</a></h3>
<p>'transparent' can now be specified independently for each border side,
on par with <color>.</p>
<h3 id="c8.5.3"><a href="box.html#border-style-properties">Section 8.5.3 Border style</a></h3>
<p>3D border styles ('groove', 'ridge', 'inset', 'outset') now depend on the
corresponding border-color rather than on 'color'.</p>
<h3 id="c8.6"><a href="box.html#bidi-box-model">Section 8.6 The box model for inline elements in bidirectional context</a></h3>
<p>Added this new section to specify layout of inline boxes when affected by bidi.</p>
<h3 id="c9.1.2"><a href="visuren.html#containing-block">Section 9.1.2
Containing blocks</a></h3>
<p>Removed paragraphs about the initial containing block, as this is
now defined differently. (See <a href="#initial-containing-block">changes
to section 10.1</a>.)</p>
<h3 id="c9.2.1.1"><a href="visuren.html#anonymous-block-level">Section 9.2.1.1
Anonymous block boxes</a></h3>
<p>Added a paragraph to define formatting when an inline box contains
a block box.</p>
<p>Specified what property values are applied to anonymous boxes.</p>
<h3 id="c9.2.2.1"><a href="visuren.html#anonymous">Section 9.2.2.1
Anonymous inline boxes</a></h3>
<p>Specified that collapsed white space does not generate anonymous
inline boxes.</p>
<h3 id="c9.2.3"><a href="visuren.html#run-in">Section 9.2.3
Run-in boxes</a></h3>
<p>Changed run-in rules so that a) run-ins that contain blocks become blocks
b) run-ins can only run into sibling blocks and c) run-ins cannot run into
other run-ins.</p>
<h3 id="c9.2.4"><a href="visuren.html#display-prop">Section 9.2.4
The 'display' property</a></h3>
<p>The 'marker' and 'compact' values of the 'display' property are
not part of CSS 2.1. Text relating to these values has been
removed throughout the specification.</p>
<p>Defined the computed value of 'display' as the specified value
except for positioned and floating elements and for the root element.
The computed value of 'display' for these elements is defined in
<a href="visuren.html#dis-pos-flo">section 9.7</a> and is slightly
different from the definition in CSS2.</p>
<p>Conforming HTML UAs are no longer allowed to ignore the 'display'
property.</p>
<h3 id="c9.3.1"><a href="visuren.html#choose-position">Section 9.3.1
Choosing a positioning scheme</a></h3>
<p>The 'position' property now applies to all elements, including
generated content.</p>
<p>The effect of relative positioning on table captions and internal
table elements is undefined in CSS 2.1.</p>
<p>For fixed positioning, introduced a conflict between this section
and section 10.1 rule 3.
See <a href="http://lists.w3.org/Archives/Member/w3c-css-wg/2003AprJun/0172.html">howcome</a> [member-only]
for rationale.</p>
<p>Forbid UAs from paginating the content of fixed boxes.</p>
<p>UAs are allowed to treat all values of 'position' as 'static' on
the root element.</p>
<h3 id="c9.3.2"><a href="visuren.html#position-props">Section 9.3.2
Box offsets</a></h3>
<p>Defined computed values of 'top', 'right', 'bottom', 'left' based
on the value of 'position'.</p>
<p>Percentage offsets are no longer undefined for containing blocks
without an explicit height.</p>
<h3 id="c9.4.1"><a href="visuren.html#block-formatting">Section 9.4.1
Block formatting contexts</a></h3>
<p>Specified that floats, absolutely positioned elements, inline-blocks,
table-cells, table-captions, and elements with 'overflow' other than
'visible' establish new block formatting contexts.</p>
<p>In the paragraph about the position of a box's outer edge with respect
to its containing block, except boxes that establish a new block formatting
context, as they may become narrower due to floats.</p>
<h3 id="c9.4.2"><a href="visuren.html#inline-formatting">Section 9.4.2
Inline formatting context</a></h3>
<p>Specified that the effect of 'justify' on the content of a line box
does not affect the contents of inline-table and inline-block boxes.</p>
<p>Empty line boxes are now required to be treated as zero-height and
ignored in margin collapsing.</p>
<h3 id="c9.4.3"><a href="visuren.html#relative-positioning">Section 9.4.3
Relative positioning</a></h3>
<p>Added several paragraphs and an example to explain exactly what the
computed values of relatively-positioned offsets are, how they affect
each other, and what happens when the positioning is overconstrained.
(These were not previously defined.)</p>
<h3 id="c9.5"><a href="visuren.html#floats">Section 9.5
Floats</a></h3>
<p>Floats are no longer required to have an explicit width.</p>
<p>Floats outside of line boxes no
17DB
longer align to the bottom of
the preceding block box; it is implied that they are initially
aligned with their non-floated position.</p>
<p>Specified that "If a shortened line box is too small to contain any
further content, then it is shifted downward until either it fits or
there are no more floats present."</p>
<p>Specified that the border box of a table, block-level replaced element,
or element in the normal flow that establishes a new block formatting
context must not overlap any floats in the same block formatting context.</p>
<h3 id="c9.5.1"><a href="visuren.html#float-position">Section 9.5.1
Positioning the float</a></h3>
<p>The 'float' property now also applies to :before/:after and generated
content.</p>
<p>UAs are now allowed to treat all values of float as 'none' on the
root element.</p>
<p>Added to rule 4 prose to define the position of a float when it
occurs between two collapsing margins.</p>
<h3 id="c9.5.2"><a href="visuren.html#flow-control">Section 9.5.2
Controlling flow next to floats</a></h3>
<p>Defined <em>clearance</em> to precisely detail the 'clear' property's
effect on margin collapsing and the block's cleared position.</p>
<p>Added note to explain effect of 'clear' on inline elements since
CSS1 (but not CSS2 or CSS 2.1) allows 'clear' on inline elements.</p>
<h3 id="c9.7"><a href="visuren.html#dis-pos-flo">Section 9.7
Relationships between 'display', 'position', and 'float'</a></h3>
<p>Changed rules to convert 'display' not always to 'block', but
to an appropriate block-level display value as given by a mapping
table.</p>
<p>Added rule 4 to convert root element's 'display' value according
to the mapping.</p>
<h3 id="c9.9"><a href="visuren.html#layers">Section 9.9
Layered presentation</a></h3>
<p>Specified that the background and borders of an element that forms
a stacking context are behind all of its descendants, altered stacking
context prose to be more precise, and added a normative
<a href="zindex.html">Appendix E: Elaborate description of Stacking
Contexts</a> to be even more precise about the position of borders,
backgrounds, and content on the z-axis.</p>
<h3 id="c9.10"><a href="visuren.html#direction">Section 9.10
Text direction</a></h3>
<p>Conforming UAs are now allowed to not support bidirectional text; in
this case they must ignore the 'direction' and 'unicode-bidi' properties.
However since applying bidi can have an effect even when a document
does not contain right-to-left characters, UAs that do support bidi are
no longer permitted to not apply the algorithm just because the document
lacks right-to-left characters.</p>
<p>Added a paragraph to define precisely how the Unicode bidirectional
algorithm applies to text in the CSS formatting model and how the CSS
'direction' property on blocks maps into the algorithm.</p>
<p>Conforming HTML UAs are no longer exempt from supporting 'direction'
and 'unicode-bidi'.</p>
<h3 id="c10"><a href="visudet.html">Chapter 10
Visual formatting model details</a></h3>
<p>Updated prose to use the terms "specified", "computed" and "used"
as appropriate when referencing values. This affects many calculations
in this section. (See <a href="#c6.1">changes to section 6.1</a>.)</p>
<h3 id="c10.1"><a href="visudet.html#containing-block-details">Section 10.1
Definition of "containing block"</a></h3>
<p id="initial-containing-block">In rule 1, defined the initial
containing block as the viewport for continuous media and the page
area for paged media. (It was previously undefined.)</p>
<p>In rule 2, defined the page area as the containing block for fixed
positioned elements in paged media.</p>
<p>In rule 4.1, when the containing block of an absolutely-positioned
element is formed by an inline-level element, it is now formed by that
element's padding edges, not its content edges.</p>
<p>In rule 4, changed the containing block for absolutely positioned
elements with only statically positioned elements from the root's
content box to the initial containing block.</p>
<p>Specified the positioning and breaking behavior of absolutely-positioned
elements in paged media.</p>
<h3 id="c10.2"><a href="visudet.html#the-width-property">Section 10.2
Content width</a></h3>
<p>Declared that if the containing block's width depends on an element's
percentage width, then the resulting layout is undefined in CSS 2.1.</p>
<h3 id="c10.3"><a href="visudet.html#Computing_widths_and_margins">Section 10.3
Calculating widths and margins</a></h3>
<p>The computed values of 'left' and 'right' for are now defined in
<a href="visuren.html#position-props">section 9.3.2</a>. The value
'auto' does not always compute to zero.</p>
<p>Added sections 10.3.9 and 10.3.10 to define calculations for inline blocks.</p>
<h3 id="c10.3.2"><a href="visudet.html#inline-replaced-width">Section 10.3.2
Inline, replaced elements</a></h3>
<p>The sizing algorithm for replaced elements now takes into account and
attempts to preserve the replaced content's intrinsic ratio. Sizing of
replaced elements with percentage intrinsic sizes and without intrinsic
sizes is now also defined.</p>
<p>The effect of percentage intrinsic widths is now undefined for CSS
level 2, rather than ignored.
<h3 id="c10.3.3"><a href="visudet.html#blockwidth">Section 10.3.3
Block-level, non-replaced elements in normal flow</a></h3>
<p>Specified that a computed total of the width, padding, and borders
that is greater than the containing block width causes auto margins to
be treated as zero in the rest of the rules. This avoids 'auto' margins
being negative on the start edge.</p>
<h3 id="c10.3.4"><a href="visudet.html#block-replaced-width">Section 10.3.4
Block-level, replaced elements in normal flow</a></h3>
<p>Applied changes to section 10.3.2 and section 10.3.3 to block-level
replaced elements in normal flow by referring to the calculations in
those sections.</p>
<h3 id="c10.3.5"><a href="visudet.html#float-width">Section 10.3.5
Floating, non-replaced elements</a></h3>
<p>Defined computations for 'auto' width floats as shrink-to-fit.
(Floats were previously required to have fixed widths.)</p>
<h3 id="c10.3.6"><a href="visudet.html#float-replaced-width">Section 10.3.6
Floating, replaced elements</a></h3>
<p>Applied changes to section 10.3.2 to this section by referencing
it for 'auto' width calculations.</p>
<h3 id="c10.3.7"><a href="visudet.html#abs-non-replaced-width">Section 10.3.7
Absolutely positioned, non-replaced elements</a></h3>
<p>Defined the static position of an element more precisely.</p>
<p>Rewrote constraint rules.</p>
<p>The 'direction' property of the containing block of the static
position determines which side is clamped to the static position, not
the 'direction' property of the containing block of the absolutely
positioned element.
<h3 id="c10.3.8"><a href="visudet.html#abs-replaced-width">Section 10.3.8
Absolutely positioned, replaced elements</a></h3>
<p>In rule 1, applied sizing rules from section 10.3.2.</p>
<p>In rule 2 (formerly rules 2 and 3), referred to new definition of
'static position' in section 10.3.7.</p>
<p>Also in rule 2, the 'direction' property of the containing block of
the static position determines which side is clamped to the static
position, not the 'direction' property of the containing block of the
absolutely positioned element.
<p>In rule 4 (formerly rule 5), prevented 'auto' left and right margins
in resulting in a negative margin on the start edge.</p>
<h3 id="c10.4"><a href="visudet.html#min-max-widths">Section 10.4
Minimum and maximum widths</a></h3>
<p>Specified that if the containing block's width is negative, the
used value of a percentage min/max width is zero.</p>
<p>Specified that if the min/max width is specified in percentages and
the containing block's width depends on this element's width, then the
resulting layout is undefined in CSS 2.1.</p>
<p>The UA is no longer allowed to select an arbitrary minimum width.</p>
<p>The used width of replaced elements with an intrinsic ratio and both
'width' and 'height' specified as 'auto' is now calculated according to
a table designed to preserve the intrinsic ratio as much as possible
within the given constraints.</p>
<h3 id="c10.5"><a href="visudet.html#the-height-property">Section 10.5
Content height</a></h3>
<p>Removed mention of 'line-height' for inline elements since their
content box height no longer depends on 'line-height'.</p>
<p>Percentage heights on absolutely-positioned elements are no longer
treated as 'auto' when the containing block's height is not explicitly
specified. Added a note to explain why this is possible.</p>
<p>Specified that a percentage height on the root element is relative
to the initial containing block.</p>
<h3 id="c10.6"><a href="visudet.html#Computing_heights_and_margins">Section 10.6
Calculating heights and margins</a></h3>
<p>The computed values of 'top' and 'bottom' for are now defined in
<a href="visuren.html#position-props">section 9.3.2</a>. The value
'auto' does not always compute to zero.</p>
<p>Added section 10.6.6 to cover cases that are no longer covered under
the previous sections.</p>
<p>Added section 10.6.7 to define 'auto' heights for block formatting
context roots. (Unlike other block boxes, the height of these boxes
increases to accommodate any normal-flow descendant floats.)</p>
<h3 id="c10.6.1"><a href="visudet.html#inline-non-replaced">Section 10.6.1
Inline, non-replaced elements</a></h3>
<p>The height of an inline box is no longer given by the 'line-height'
property and is now undefined. This section now suggests that the
height of the box can be based on the font.</p>
<h3 id="c10.6.2"><a href="visudet.html#inline-replaced-height">Section 10.6.2
Inline replaced elements, block-level replaced elements in normal flow,
'inline-block' replaced elements in normal flow and floating replaced elements</a></h3>
<p>The sizing algorithm for replaced elements now takes into account and
attempts to preserve the replaced content's intrinsic ratio. Sizing of
replaced elements with percentage intrinsic sizes and without intrinsic
sizes is now also defined.</p>
<p>Specified that for inline elements, the margin box is used when calculating
the height of the line box.</p>
<h3 id="c10.6.3"><a href="visudet.html#normal-block">Section 10.6.3
Block-level non-replaced elements in normal flow when 'overflow' computes
to 'visible'</a></h3>
<p>This section now only applies to elements whose 'overflow' value computes
to 'visible'; elements with other values of 'overflow' are discussed in the
new section 10.6.7 ('Auto' heights for block formatting context roots).</p>
<h3 id="c10.6.4"><a href="visudet.html#abs-non-replaced-height">Section 10.6.4
Absolutely positioned, non-replaced elements</a></h3>
<p>Defined the static position of an element more precisely.</p>
<p>Rewrote constraint rules.</p>
<h3 id="c10.6.5"><a href="visudet.html#abs-replaced-height">Section 10.6.5
Absolutely positioned, replaced elements</a></h3>
<p>In rule 1, applied sizing rules from section 10.6.2.</p>
<h3 id="c10.7"><a href="visudet.html#min-max-heights">Section 10.7
Minimum and maximum heights</a></h3>
<p>Percentage min/max heights on absolutely-positioned elements are no
longer treated as '0'/'none' when the containing block's height is not
explicitly specified. However if the containing block's width depends
on an element's percentage width, then the resulting layout is undefined
in CSS 2.1.</p>
<p>The used width of replaced elements with an intrinsic ratio and both
'width' and 'height' specified as 'auto' is now calculated according to
a table designed to preserve the intrinsic ratio as much as possible
within the given constraints.</p>
<h3 id="c10.8"><a href="visudet.html#line-height">Section 10.8
Line height calculations</a></h3>
<p>Added rule 4 to specify that the height of the line box must be at
least as much as that specified by the 'line-height' property on the
this block.</p>
<h3 id="c10.8.1"><a href="visudet.html#leading">Section 10.8.1
Leading and half-leading</a></h3>
<p>UAs are no longer permitted to clip content to the line box, and
are instead asked to render overlapping boxes in document order.</p>
<p>'line-height' set on a block no longer specifies the minimal height
of each inline box; instead it specifies the minimal height of each
line box. The exact effect of this requirement is expressed in terms
of struts; it is affected by vertical-alignment.</p>
<p>Adjusted text to reflect that the content box height of an inline
is no longer dictated by the 'line-height' property.</p>
<p>Since the content box is now defined by the font and not by the
line-height, 'text-top' and 'text-bottom' refer to the content area
instead of the font.</p>
<p>Defined 'top' and 'bottom' alignment in terms of aligned subtrees
to take into account any protruding descendants.</p>
<p>Defined the baseline of inline tables and inline blocks.</p>
<h3 id="c11.1"><a href="visufx.html#overflow-clipping">Section 11.1
Overflow and clipping</a></h3>
<p>Specified that 'overflow' clips to the padding edge.</p>
<h3 id="c11.1.1"><a href="visufx.html#overflow">Section 11.1.1
Overflow</a></h3>
<p>'projection' media are no longer permitted to print overflowing
content for 'overflow: scroll'. 'Print' media now <em>may</em>, as
opposed to <em>should</em>.</p>
<p>UAs are now required to apply the 'overflow' property set on the root
element to the viewport. Additionally, HTML UAs must use the 'overflow'
property on the HTML BODY element instead if the root element's
'overflow' value is 'visible'.</p>
<p>Specified placement of scrollbar in the box model.</p>
<p>The width of any scrollbars is no longer included in the width of
the containing block. (And consequently, all text in section 10.3 that
subtracts the scrollbar width from the containing block width has been
removed.)
<h3 id="c11.1.2"><a href="visufx.html#clipping">Section 11.1.2 Clipping:
the 'clip' property</a></h3>
<p>The 'clip' property now applies only to absolutely positioned elements.
Furthermore, it applies to those elements even when their 'overflow' is
'visible'.</p>
<p>The default value of 'clip', 'auto', now indicates no clipping
rather than clipping to the element's border box.</p>
<p>Values of "rect()" should be separated by commas. UAs are
required to support this syntax, but may also support a space-separated
syntax since CSS2 was not clear about this.</p>
<p>While CSS2 specified that values of "rect()" give offsets from the
respective sides of the box, current implementations interpret values
with respect to the top and left edges for <em>all</em> four values
(top, right, bottom, and left). This is now the specified
interpretation.
<h3 id="c11.2"><a href="visufx.html#visibility">Section 11.2
Visibility</a></h3>
<p>The 'visibility' property is now defined to inherit, and descendant
elements can override an ancestor's hidden visibility.</p>
<h3 id="c12"><a href="generate.html">Chapter 12
Generated content, automatic numbering, and lists</a></h3>
<p>Moved all discussion of aural rendering to Appendix A.</p>
<h3 id="c12.1"><a href="generate.html#before-after-content">Section 12.1
The :before and :after pseudo-elements</a></h3>
<p>Removed restrictions on which properties and property values
are allowed on ':before' and ':after' pseudo-elements.</p>
<h3 id="c12.2"><a href="generate.html#content">Section 12.2 The
'content' property</a></h3>
<p>The initial value of 'content' is now 'normal', not the empty
string.</p>
<p>The 'content' property now distinguishes between the empty string,
which creates an empty box; and 'normal'/'none', which create no box
at all. (There is no distinction between 'normal' and 'none' in
level 2.)</p>
<p>A UA is now allowed to report a URI that fails to download.</p>
<p>Removed recommendation to authors to put rules with media-sensitive
'content' properties inside '@media'.</p>
<p>Whether '\A' escapes in generated content create line breaks is now
subject to the 'white-space' property.</p>
<p>The former section 12.3 on interaction between ':before', ':after'
and elements with 'display: compact' or 'display: run-in' has been
removed. (The interaction is already fully defined, because generated
content consists of boxes in the tree, no different from other boxes.)
<h3 id="c12.3.2"><a href="generate.html#quotes-insert">Section 12.3.2
Inserting quotes with the 'content' property</a></h3>
<p>Specified that extra 'close-quote's and 'no-close-quote's (those
without a matching 'open-quote' or 'no-open-quote') are not rendered,
and that neither 'close-quote' nor 'no-close-quote' cause the quoting
depth to be negative.</p>
<h3 id="c12.4"><a href="generate.html#counters">Section 12.4 Automatic
counters and numbering</a></h3>
<p>Defined what a rule with duplicate counters, such as
'counter-reset: section 2 section', means.</p>
<h3 id="c12.4.1"><a href="generate.html#scope">Section 12.4.1 Nested
counters and scope</a></h3>
<p>The scope of a counter no longer defaults to the whole document,
but starts at the first element that uses the counter. (This affects
counters that are used without a prior 'counter-reset' to set the
scope explicitly.)</p>
<h3 id="c12.5"><a href="generate.html#lists">Section 12.5
Lists</a></h3>
<p>Removed text in section 12.5 (formerly 12.6) relating to the
'marker' display value.</p>
<p>Removed the 'marker-offset' property (and thus former section 12.6.1).</p>
<h3 id="c12.5.1"><a href="generate.html#list-style">Section 12.5.1
Lists</a></h3>
<p>The list styles 'hebrew', 'armenian', 'georgian', 'cjk-ideographic',
'hiragana', 'katakana', 'hiragana-iroha' and 'katakana-iroha' have
been removed due to lack of implementation experience. (They are
expected to return in the CSS3 Lists module.)</p>
<p>Removed the sentence that said that an unknown value for
'list-style-type' should cause the value 'decimal' to be used instead.
Instead, normal parsing rules apply and cause the rule to be
ignored.</p>
<p>The size of list style markers without an intrinsic size is now
defined.
<h3 id="c13.1"><a href="page.html">Chapter 13 Paged media</a></h3>
<p>The 'size', 'marks', and 'page' properties are not part of
CSS 2.1.</p>
<h3 id="c13.2.2"><a href="page.html#page-selectors">Section 13.2.2
Page selectors</a></h3>
<p>The requirement for UA's to honor different declarations for
:left, :right, and :first pages has been softened to simplify
implementations: the page area of the :first page may be used
for :left and :right pages as well.</p>
<h3 id="c13.3.1"><a href="page.html#page-break-props">Section 13.3.1
Page break properties</a></h3>
<p>UAs are now only required to apply the page break properties
to block-level elements in the normal flow of the root element,
not to other blocks.However, UAs are now permitted to apply these
properties to elements other than block-level elements.</p>
<p>Defined treatment of margins, borders, and padding when a page
break splits a box.</p>
<p>The 'page-break-inside' property no longer inherits.</p>
<h3 id="c13.3.3"><a href="page.html#allowed-page-breaks">Section 13.3.3
Allowed page breaks</a></h3>
<p>The 'page-break-inside' property of all ancestors is checked
for page-breaking restrictions, not just that of the breakpoint's
parent.</p>
<p>When dropping restrictions to find a page breaking opportunity,
rule A is dropped together with B and D rather than together with C.</p>
<p>Removed restriction on breaking within absolutely positioned boxes.</p>
<h3 id="c14.2.1"><a href="colors.html#background-properties">Section
14.2.1 Background properties</a></h3>
<p>For 'background-position', the restriction that keywords cannot
be combined with percentage or length values is removed. I.e., a
value like: '25% top' is now allowed. Also, 'background-position'
now applies to all elements, not just to block-level and replaced
elements.</p>
<p>User agents are no longer allowed to treat a value of 'fixed'
for 'background-attachment' as 'scroll'. Instead they must ignore
all such declarations as if 'fixed' were an invalid value.</p>
You can’t perform that action at this time.