【问题标题】:CSS Media Query TricksCSS 媒体查询技巧
【发布时间】:2011-03-22 05:43:24
【问题描述】:

我正在编写一个使用媒体查询来处理移动版本的网站。是否可以让主css文件输出这个

<div class="classname">
  Item 1<br />
  Item 2<br />
  Item 3<br />
  etc
</div>

然后在手机的css文件中输出这个:

<div class="classname">
  Item 1&nbsp;&nbsp;
  Item 2&nbsp;&nbsp;
  Item 3&nbsp;&nbsp;
  etc
</div>

还可以通过媒体查询隐藏文本吗?

【问题讨论】:

    标签: html css media-queries


    【解决方案1】:

    不完全是,不。但是你可以有一个 ulli s 是 display: block (对于前一个例子)或 display: inline (对于后者)。

    <ul class="classname">
      <li>Item 1</li>
      <li>Item 2</li>
      <li>Item 3</li>
     </ul>
    
     case 1:
     ul.classname li { display: block }
    
     case 2:
     ul.classname li { display: inline; padding-right: 24px } 
    

    【讨论】:

    • 谢谢,我现在已经更进一步了,但是显示内联部分不起作用:/ +1 的帮助
    • @ing0 你删除了他&lt;br&gt; s 吗?如果没有其他原因导致中断,它应该可以工作。
    • @ing0 是的,div 标签默认为display: block,这会导致换行。那些也需要display: inline
    • 啊,这是 ul.classname li 上的一个错字!谢谢大家的回答!!
    【解决方案2】:

    您可以简单地在您的 iphone 样式表中设置 br {display:none},也可以使用 ::after 添加信息,但我不确定您是否可以在 content::after 部分中放置不间断空格声明。

    除此之外,如果你隐藏了br 标签,你就没有钩子可以在后面添加一些东西了。

    我建议先使用语义非 br html,这会使一切变得容易得多。

    【讨论】:

      【解决方案3】:

      您编写它的方式是不可能的:CSS 不会重写您的 HTML,它只是改变文档的表现方面。最好的方法是编写“语义”HTML,即包含文档结构但不包含布局的 HTML,然后使用 CSS 定义布局方式。

      在您的示例中,您可能希望div 包含项目列表,因此合乎逻辑的做法是使用&lt;ul&gt; 而不是&lt;div&gt;,并使用&lt;li&gt; 而不是单个文本项目,例如:

      <ul class="classname">
          <li>Item 1</li>
          <li>Item 2</li>
          <li>Item 3</li>
      </ul>
      

      有了这样的标记,您可以使用 CSS 来设置列表样式。对于桌面浏览器,您可能希望垂直显示项目:

      ul.classname {
          /* First, override browser defaults: */
          list-style: none;
          padding: 0;
          margin: 0;
          text-indent: 0;
      }
      
      ul.li {
          display: block;
          padding: 0;
          margin: 0;
          text-indent: 0;
      }
      

      对于移动浏览器,您可能希望它们彼此相邻,并在它们之间添加一点间距:

      ul.li {
          display: inline;
          margin-right: 2em;
      }
      

      要完全隐藏元素,请使用标准 CSS 技术,即display: none

      【讨论】:

      • 是否有任何理由 display: inline 会像块一样显示它? +1 以获得很好的答案
      • 某些浏览器可能会忽略列表项的inline,或者可能有其他规则在li 的子项上设置display: block。或者,@media 可能与您期望的不匹配。
      猜你喜欢
      • 2022-01-25
      • 2021-08-23
      • 2012-02-15
      • 2019-12-09
      • 1970-01-01
      • 1970-01-01
      • 2018-06-04
      • 2017-01-06
      相关资源
      最近更新 更多