草庐IT

html - 如何对首屏内容使用内联 CSS

coder 2024-02-28 原文

我最近遇到了一些提高网站性能的任务,但是由于问题中使用了 abovebelow 的概念,我感到很困惑,无法理解所问的内容. (ーー;)

折叠是否意味着页面分成两部分? (根据设计和 css 规则)所以解决方案是检测用于第二部分的 css 并将其加载到页面底部?


任务
style.css 中的下方折叠样式延迟了上方折叠内容的呈现。提高首屏内容的加载速度。

您的解决方案应该仅为首屏内容内联 CSS,并确保 main.css 的加载不会阻止页面呈现。

document.addEventListener('DOMContentLoaded', () => {
  document.getElementById('scroll-button').addEventListener('click', () => {
    document.getElementsByClassName('conversation-headline')[0]
        .scrollIntoView(true);
  });
});
html {
  background-color: #FFF;
}

body {
  background-color: #FFF;
  color: #848484;
  font-family: "Helvetica","Arial",sans-serif;
  margin: 0;
  min-height: 100vh;
}

h1 {
  font-size: 28px;
  font-weight: 100;
}

h2 {
  color: #FFF;
  font-size: 38px;
  font-weight: 100;
}

h3 {
  color: #000;
  font-size: 38px;
  font-weight: 100;
  line-height: 125%;
  margin: 0 40px;
}

.card {
  margin: 0 auto;
  max-width: 79%;
}

.card-content {
  align-items: center;
  box-shadow: 0 4px 5px 0 rgba(0,0,0,.14),
    0 1px 10px 0 rgba(0,0,0,.12),
    0 2px 4px -1px rgba(0,0,0,.2);
  display: flex;
  justify-content: space-around;
  padding: 10px;
}

.conversation-diag {
  align-items: center;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
}

.conversation-headline {
  color: #000;
  font-size: 38px;
  font-weight: 100;
  line-height: 125%;
  margin: 0 40px;
}

.conversation-pane {
  display: flex;
  flex-direction: column;
  height: 40vh;
  justify-content: space-around;
  padding: 40px;
}

.flipped {
  transform: scaleX(-1);
}

.header {
  align-items: center;
  box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2),
    0 4px 5px 0 rgba(0, 0, 0, 0.14),
    0 1px 10px 0 rgba(0, 0, 0, 0.12);
  display: flex;
  height: 10vh;
  padding: 0 16px;
}

.ribbon {
  align-items: center;
  background-color: #848484;
  display: flex;
  flex-direction: column;
  height: 90vh;
  justify-content: space-around;
}

.ribbon button {
  background-color: #FFF;
  box-shadow:
    0 2px 2px 0 rgba(0,0,0,0.14),
    0 3px 1px -2px rgba(0,0,0,0.2),
    0 1px 5px 0 rgba(0,0,0,0.12);
  color: #848484;
  cursor: pointer;
  font-size: 25px;
  padding: 0.7em 0.57em;
}
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Socializer</title>
    <link rel="stylesheet" href="styles/main.css">
    <script src="scripts/app.js" type="text/javascript"></script>
  </head>
  <body>
    <header class="header">
      <svg fill="#848484" height="48" viewbox="0 0 24 24" width="48" xmlns="http://www.w3.org/2000/svg">
          <path d="M0 0h24v24H0z" fill="none"/>
          <path d="M21 5v14h2V5h-2zm-4 14h2V5h-2v14zM14 5H2c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zM8 7.75c1.24 0 2.25 1.01 2.25 2.25S9.24 12.25 8 12.25 5.75 11.24 5.75 10 6.76 7.75 8 7.75zM12.5 17h-9v-.75c0-1.5 3-2.25 4.5-2.25s4.5.75 4.5 2.25V17z"/>
      </svg>
      <h1>Socializer</h1>
    </header>
    <div class="ribbon">
      <div class="ribbon-text-container">
        <h2>Really talk to your friends.</h2>
        <h2>Really.</h2>
      </div>
      <button id="scroll-button">Learn More</button>
    </div>
    <div>
      <section class="conversation-pane">
      <h3 class="conversation-headline">Make social media mean something again.</h3>
        <div class="conversation-diag">
          <div class="card">
            <div class="card-content">
              <svg fill="#000000" height="128" viewbox="0 0 24 24" width="128" xmlns="http://www.w3.org/2000/svg">
                  <circle cx="9" cy="9" r="4"/>
                  <path d="M9 15c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4zm7.76-9.64l-1.68 1.69c.84 1.18.84 2.71 0 3.89l1.68 1.69c2.02-2.02 2.02-5.07 0-7.27zM20.07 2l-1.63 1.63c2.77 3.02 2.77 7.56 0 10.74L20.07 16c3.9-3.89 3.91-9.95 0-14z"/>
                  <path d="M0 0h24v24H0z" fill="none"/>
              </svg>
              <div class="text-container">
                <h3>Miss you!</h3>
              </div>
            </div>
          </div>
          <div class="card">
            <div class="card-content">
              <div class="text-container">
                <h3>Miss you toooo!</h3>
              </div>
              <svg class="flipped" fill="#000000" height="128" viewbox="0 0 24 24" width="128" xmlns="http://www.w3.org/2000/svg">
                  <circle cx="9" cy="9" r="4"/>
                  <path d="M9 15c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4zm7.76-9.64l-1.68 1.69c.84 1.18.84 2.71 0 3.89l1.68 1.69c2.02-2.02 2.02-5.07 0-7.27zM20.07 2l-1.63 1.63c2.77 3.02 2.77 7.56 0 10.74L20.07 16c3.9-3.89 3.91-9.95 0-14z"/>
                  <path d="M0 0h24v24H0z" fill="none"/>
              </svg>
            </div>
          </div>
        </div>
      </section>
    </div>
  </body>
</html>

最佳答案

为了更好地了解首屏内容,请暂时将其应用于您的网站:

body {
  height: 100vh;
  margin: 0;
  overflow: hidden;
}

您现在在屏幕上看到的所有内容都在首屏。您看不到的所有内容都在非首屏

从技术上讲,折叠 是屏幕的底部边距,无需向下滚动。

“首屏 CSS 性能加载” 是指在不向下滚动的情况下将可见内容的 CSS 规则分开,并将它们放在一个单独的较小文件中。此样式表应该是您页面中唯一阻止渲染的 CSS。
你的 CSS 的其余部分将被加载 async,因为它不会创建 FOUC .

这样一来,您的页面加载和渲染速度将比加载所有 CSS 渲染阻塞速度更快。

这种技术唯一可以创建 FOUC 的情况是有人清空缓存并硬重新加载页面,同时向下滚动,但这种情况永远不会发生。

关于html - 如何对首屏内容使用内联 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50262690/

有关html - 如何对首屏内容使用内联 CSS的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  4. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  5. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  6. ruby - 在 Ruby 中使用匿名模块 - 2

    假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于

  7. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  8. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  9. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  10. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

随机推荐