左翼如何重掌互联网并实现复兴 | 罗伯特·托平卡

左翼如何重掌互联网并实现复兴 | 罗伯特·托平卡
这段CSS代码定义了一个名为"Guardian Headline Full"的自定义字体族,包含多种样式和字重。它涵盖细体、常规体、中等体和半粗体版本,每种都提供常规和斜体样式。字体文件托管于线上,并以三种格式提供:WOFF2、WOFF和TrueType,确保跨浏览器兼容性。 @media (min-width: 71.25em) { .content__main-column--interactive { margin-left: 160px; } } @media (min-width: 81.25em) { .content__main-column--interactive { margin-left: 240px; } } .content__main-column--interactive .element-atom { max-width: 620px; } @media (max-width: 46.24em) { .content__main-column--interactive .element-atom { max-width: 100%; } } .content__main-column--interactive .element-showcase { margin-left: 0; } @media (min-width: 46.25em) { .content__main-column--interactive .element-showcase { max-width: 620px; } } @media (min-width: 71.25em) { .content__main-column--interactive .element-showcase { max-width: 860px; } } .content__main-column--interactive .element-immersive { max-width: 1100px; } @media (max-width: 46.24em) { .content__main-column--interactive .element-immersive { width: calc(100vw - var(--scrollbar-width, 0px)); position: relative; left: 50%; right: 50%; margin-left: calc(-50vw + var(--half-scrollbar-width, 0px)) !important; margin-right: calc(-50vw + var(--half-scrollbar-width, 0px)) !important; } } @media (min-width: 46.25em) { .content__main-column--interactive .element-immersive { transform: translate(-20px); width: calc(100% + 60px); } } @media (max-width: 71.24em) { .content__main-column--interactive .element-immersive { margin-left: 0; margin-right: 0; } } @media (min-width: 71.25em) { .content__main-column--interactive .element-immersive { transform: translate(0); width: auto; } } @media (min-width: 81.25em) { .content__main-column--interactive .element-immersive { max-width: 1260px; } } .content__main-column--interactive p, .content__main-column--interactive ul { max-width: 620px; } .content__main-column--interactive:before { position: absolute; top: 0; height: calc(100% + 15px); min-height: 100px; content: ""; } @media (min-width: 71.25em) { }.content__main-column--interactive:before { border-left: 1px solid #dcdcdc; z-index: -1; left: -10px; } @media (min-width: 81.25em) { .content__main-column--interactive:before { border-left: 1px solid #dcdcdc; left: -11px; } } .content__main-column--interactive .element-atom { margin-top: 0; margin-bottom: 0; padding-bottom: 12px; padding-top: 12px; } .content__main-column--interactive p + .element-atom { padding-top: 0; padding-bottom: 0; margin-top: 12px; margin-bottom: 12px; } .content__main-column--interactive .element-inline { max-width: 620px; } @media (min-width: 61.25em) { figure[data-spacefinder-role="inline"].element { max-width: 620px; } } :root { --dateline: #606060; --headerBorder: #dcdcdc; --captionText: #999; --captionBackground: hsla(0, 0%, 7%, 0.72); --feature: #c70000; --new-pillar-colour: var(--primary-pillar, var(--feature)); } :root:root { --subheading-text: var(--secondary-pillar); --pullquote-text: var(--secondary-pillar); --pullquote-icon: var(--secondary-pillar); --block-quote-text: var(--article-text); } :root:root blockquote { --block-quote-fill: var(--secondary-pillar); } @media (prefers-color-scheme: dark) { :root:root:not([data-color-scheme="light"]) { --subheading-text: var(--darkmode-pillar); --pullquote-text: var(--darkmode-pillar); --pullquote-icon: var(--darkmode-pillar); } :root:root:not([data-color-scheme="light"]) blockquote { --block-quote-fill: var(--darkmode-pillar); } } .content__main-column--interactive .element.element-atom, .element.element-atom { padding: 0; } #article-body > div .element-atom:first-of-type + p:first-of-type, #article-body > div .element-atom:first-of-type + .sign-in-gate + p:first-of-type, #article-body > div .element-atom:first-of-type + #sign-in-gate + p:first-of-type, #article-body > div hr:not(.last-horizontal-rule) + p, .content--interactive > div .element-atom:first-of-type + p:first-of-type, .content--interactive > div .element-atom:first-of-type + .sign-in-gate + p:first-of-type, .content--interactive > div .element-atom:first-of-type + #sign-in-gate + p:first-of-type, .content--interactive > div hr:not(.last-horizontal-rule) + p, #comment-body .element-atom:first-of-type + p:first-of-type, #comment-body .element-atom:first-of-type + .sign-in-gate + p:first-of-type, #comment-body .element-atom:first-of-type + #sign-in-gate + p:first-of-type, #comment-body hr:not(.last-horizontal-rule) + p, [data-gu-name="body"] .element-atom:first-of-type + p:first-of-type, [data-gu-name="body"] .element-atom:first-of-type + .sign-in-gate + p:first-of-type, [data-gu-name="body"] .element-atom:first-of-type + #sign-in-gate + p:first-of-type, [data-gu-name="body"] hr:not(.last-horizontal-rule) + p, #feature-body .element-atom:first-of-type + p:first-of-type, #feature-body .element-atom:first-of-type + .sign-in-gate + p:first-of-type, #feature-body .element-atom:first-of-type + #sign-in-gate + p:first-of-type, #feature-body hr:not(.last-horizontal-rule) + p { padding-top: 14px; } #article-body > div .element-atom:first-of-type + p:first-of-type:first-letter, #article-body > div .element-atom:first-of-type + .sign-in-gate + p:first-of-type:first-letter, #article-body > div .element-atom:first-of-type + #sign-in-gate + p:first-of-type:first-letter, #article-body > div hr:not(.last-horizontal-rule) + p:first-letter, .content--interactive > div .element-atom:first-of-type + p:first-of-type:first-letter, .content--interactive > div .element-atom:first-of-type + .sign-in-gate + p:first-of-type:first-letter, .content--interactive > div .element-atom:first-of-type + #sign-in-gate + p:first-of-type:first-letter, .content--interactive > div hr:not(.last-horizontal-rule) + p:first-letter, #comment-body .element-atom:first-of-type + p:first-of-type:first-letter, #comment-body .element-atom:first-of-type + .sign-in-gate + p:first-of-type:first-letter, #comment-body .element-atom:first-of-type + #sign-in-gate + p:first-of-type:first-letter, #comment-body hr:not(.last-horizontal-rule) + p:first-letter, [data-gu-name="body"] .element-atom:first-of-type + p:first-of-type:first-letter, [data-gu-name="body"] .element-atom:first-of-type + .sign-in-gate + p:first-of-type:first-letter, [data-gu-name="body"] .element-atom:first-of-type + #sign-in-gate + p:first-of-type:first-letter, [data-gu-name="body"] hr:not(.last-horizontal-rule) + p:first-letter, #feature-body .element-atom:first-of-type + p:first-of-type:first-letter,文章正文第一段的首字母使用特定的标题字体,设置为粗体、大写、大字号并采用首字下沉样式,颜色通过自定义属性设置。 紧接水平分隔线后的段落没有上内边距。文章正文内的引用块最大宽度为620像素。 展示元素的图注采用静态定位,宽度最大为620px。沉浸式元素横跨整个视口宽度,并根据滚动条进行调整。在较大屏幕上,它们被限制在最大宽度内,而在较小屏幕上,它们延伸至边缘并调整边距。沉浸式元素的图注具有响应式水平内边距。 在较宽的屏幕上,文章标题使用CSS网格布局。标题有上边框,元信息相对定位。摘要内的链接使用自定义颜色下划线,悬停时颜色变化,第一段有上边框。提供的文本似乎是用于网页布局的CSS代码,特别是针对名为"furniture-wrapper"的组件或包装器。它定义了不同屏幕尺寸的样式,包括网格布局、边框、字体和元素可见性的调整。该代码为标题、元信息、摘要文本和媒体元素设置了规则,控制它们在不同设备上的外观。[data-gu-name=media] div div { width: 100%; margin-inline: 0; } @media (min-width: 61.25em) { .furniture-wrapper #main-media, .furniture-wrapper [data-gu-name=media] { margin-bottom: 0; } } @media (max-width: 46.24em) { .furniture-wrapper #main-media, .furniture-wrapper [data-gu-name=media] { width: calc(100vw - var(--scrollbar-width, 0px)); margin-left: -10px; } } @media (max-width: 46.24em) and (min-width: 30em) { .furniture-wrapper #main-media, .furniture-wrapper [data-gu-name=media] { margin-left: -20px; } } .furniture-wrapper figcaption { position: absolute; bottom: 0; padding: 4px 10px 12px; background-color: var(--captionBackground); color: var(--captionText); max-width: unset; width: 100%; margin-bottom: 0; min-height: 46px; } .furniture-wrapper figcaption span { color: var(--headerBorder); } .furniture-wrapper figcaption span svg { fill: var(--headerBorder); } .furniture-wrapper figcaption span:nth-of-type(1) { display: none; } .furniture-wrapper figcaption span:nth-of-type(2) { display: block; max-width: 90%; } @media (min-width: 30em) { .furniture-wrapper figcaption { padding: 4px 20px 12px; } } .furniture-wrapper figcaption.hidden { opacity: 0; } .furniture-wrapper #caption-button { display: block; position: absolute; bottom: 10px; right: 8px; z-index: 30; background-color: var(--captionBackground); border: none; border-radius: 50%; padding: 6px 5px 5px; } .furniture-wrapper #caption-button svg { transform: scale(.85); } @media (min-width: 30em) { .furniture-wrapper #caption-button { right: 10px; } } @media (min-width: 71.25em) { .content__main-column--interactive:before { top: -12px !important; height: calc(100% + 24px) !important; } } .content__main-column--interactive h2 { max-width: 620px; } :root:has(.ios, .android) { --darkBackground: #1a1a1a; --feature: #c70000; --darkmodeFeature: #ff5943; --new-pillar-colour: var(--primary-pillar, var(--feature)); } @media (prefers-color-scheme: dark) { :root:has(.ios, .android) { --new-pillar-colour: var(--darkmode-pillar, var(--darkmodeFeature)); } } body.ios #feature-article-container .element-atom:first-of-type+p:first-of-type:first-letter, body.ios #feature-article-container .element-atom:first-of-type+.sign-in-gate+p:first-of-type:first-letter, body.ios #feature-article-container .element-atom:first-of-type+#sign-in-gate+p:first-of-type:first-letter, body.ios #standard-article-container .element-atom:first-of-type+p:first-of-type:first-letter, body.ios #standard-article-container .element-atom:first-of-type+.sign-in-gate+p:first-of-type:first-letter, body.ios #standard-article-container .element-atom:first-of-type+#sign-in-gate+p:first-of-type:first-letter, body.ios #comment-article-container .element-atom:first-of