【问题标题】:How to write fraction value using html?如何使用html编写分数值?
【发布时间】:2011-11-23 11:14:51
【问题描述】:

我想写分数值如下图:

如何在不使用图像的情况下使用 html 写入小数值?

注意:我不想要这个 1 1/2 模式,但严格来说就像上面的图片

【问题讨论】:

标签: html numbers fractions


【解决方案1】:

尝试以下方法:

1<sup>1</sup>⁄<sub>2</sub>

这显示为:

112

【讨论】:

  • 在 Chrome、Firefox 和 Opera 的最新版本中,输入 1 1⁄2 会自动将分子和分母转换为 unicode 上标和下标,这看起来比 HTML 上标和下标还要好: 1 1⁄2
【解决方案2】:

您可以将<sup><sub> 元素与分数斜线实体 ⁄ 一起使用

<sup>1</sup>⁄<sub>2</sub>12

更新:我制作了this fiddle,它使用表格在 HTML 中显示了一个连字符。

   <table>
      <tbody>
        <tr>
          <td rowspan="2">1</td>
          <td style="border-bottom:solid 1px">1</td>
          </tr>
          <tr>            
            <td>2</td>
          </tr>
      </tbody>
   </table>

【讨论】:

  • 可以用分数连字符代替斜杠吗?
  • 1.4 specs 上似乎没有,所以我猜没有标准实体。我不是css专家,所以我会用两行一列&lt;table&gt;,中间有一个边框。又快又脏。在这里你可以看到它的实际效果:Math in HTML
  • 表格不是&lt;p&gt; 中的合法元素,因此无法在句子中使用此解决方案。除此之外,&lt;table&gt; 不应用于表格数据以外的内容。
  • 同意,你的提议好多了。
【解决方案3】:

以下代码将按照问题中的示例呈现,如果客户端不支持 CSS,它将呈现为纯文本,仍然可以作为分数读取:

<p>1 <span class="frac"><sup>12</sup><span>/</span><sub>256</sub></span>.</p>
span.frac {
  display: inline-block;
  font-size: 50%;
  text-align: center;
}
span.frac > sup {
  display: block;
  border-bottom: 1px solid;
  font: inherit;
}
span.frac > span {
  display: none;
}
span.frac > sub {
  display: block;
  font: inherit;
}

中间的&lt;span&gt; 只为不渲染 CSS 的客户服务——文本仍然可以作为1 12/256 阅读——这就是为什么你应该在整数和分数之间放置一个空格。

您可能想要更改字体大小,因为生成的元素可能比行中的其他字符高一点,或者您可能想要使用相对位置将其稍微移到底部。

但这里介绍的一般概念可能足以满足基本用途。

【讨论】:

  • 用加号写两个分数时,加号不对齐。您可以通过将 + 号包装为:&lt;span style="vertical-align:10px;"&gt;+&lt;/span&gt; 来更改此设置,请参阅结果jsfiddle.net/hx5oyotq/1
  • 谢谢这个帮助我.. :)
【解决方案4】:

使用MathMLSpecificationWikipedia):

<math>
 <mrow>
  <mn>1</mn>
  <mfrac>
   <mi>1</mi>
   <mi>2</mi>
  </mfrac>
 </mrow>
</math>

【讨论】:

  • @Kartheeks 正如 jedierikb 所提到的,并非所有浏览器都完全支持 MathML。它在我的默认移动浏览器(Firefox)中看起来很棒,所以这完全取决于您支持的浏览器。
  • 更具体地说,它不适用于大多数浏览器。该链接仅显示 Safari 9.1+、iOS Safari 9.2+ 和 Firefox 46+,其中 MS Edge“当前未计划”和 Chrome“不再追求”。
  • 啊,永恒的铬功能请求:bugs.chromium.org/p/chromium/issues/detail?id=152430
  • 对于 MathMl 的跨浏览器支持使用 MathJax :-
【解决方案5】:

.frac {
    display: inline-block;
    position: relative;
    vertical-align: middle;
    letter-spacing: 0.001em;
    text-align: center;
}
.frac > span {
    display: block;
    padding: 0.1em;
}
.frac span.bottom {
    border-top: thin solid black;
}
.frac span.symbol {
    display: none;
} 
1 <div class="frac">
    <span>1</span>
    <span class="symbol">/</span>
    <span class="bottom">2</span>
    
</div>

【讨论】:

  • 这个答案绝对是视觉上最漂亮的!谢谢!
  • 完美运行!我认为这应该是公认的答案,因为提问者想要的东西看起来完全一样,这不是公认的答案。
  • 我也喜欢你有一种备用方式来显示分数,以防 CSS 被禁用
  • 运行完美。谢谢!
  • 天啊,这是一个被低估的解决方案。它的工作方式真是天才!杰出的。 +1
【解决方案6】:

查看以下内容:

span.frac {
  display: inline-block;
  text-align: center;
  vertical-align: middle;
}
span.frac > sup, span.frac > sub {
  display: block;
  font: inherit;
  padding: 0 0.3em;
}
span.frac > sup {border-bottom: 0.08em solid;}
span.frac > span {display: none;}
&lt;p&gt;7&amp;nbsp;&lt;span class="frac"&gt;&lt;sup&gt;42&lt;/sup&gt;&lt;span&gt;&amp;frasl;&lt;/span&gt;&lt;sub&gt;73&lt;/sub&gt;&lt;/span&gt;.&lt;/p&gt;

CodePen

【讨论】:

  • 天啊,这是一个被低估的解决方案。它的工作方式真是天才!杰出的。 +1
【解决方案7】:

使用纯 html 和 br 的边距属性,您可以解决

br {   
    content: "";
    margin: -1%;
    display: block;
 }
&lt;big&gt;1&lt;/big&gt;&lt;sup&gt; &lt;u&gt;&lt;big&gt;1&lt;/big&gt;&lt;/u&gt;&lt;/sup&gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&lt;sup&gt; &lt;big&gt;2&lt;/big&gt;&lt;/sup&gt;

【讨论】:

    【解决方案8】:

    我认为有一种更简单的方法可以做到这一点。使用以下 HTML。

    1 &amp;frac12;
    结果是 1 ½

    【讨论】:

    • 完美!最简单的就是最好的——对于这么简单的事情来说,所有这些其他答案都太过分了。
    • 如果我有2/15这样的分数怎么办??
    • 这实际上呈现一个 unicode 字符,只有最常用的分数可用,不适用于任何分数。 ⅐ ⅑ ⅒ ⅓ ⅔ ⅕ ⅖ ⅗ ⅘ ⅙ ⅚ ⅛ ⅜ ⅝ ⅞ ¼ ½ ¾
    【解决方案9】:
    br {   
        content: "";
        margin: -1%;
        display: block;
     }
    
    <big>1</big><sup> <u><big>1</big></u></sup><br/>&nbsp;&nbsp;<sup> <big>2</big></sup>
    

    【讨论】:

      【解决方案10】:

      这是另一种使用较新的 CSS 方法的方法。此方法也使用自定义标签,但如果您不喜欢自定义标签,可以将其更改为 &lt;div class = "..."&gt;&lt;/div&gt;

      将以下内容复制到您的 CSS:

      如果您改用类,请使用 .fraction.numer

      fraction {
        display: inline-grid;
      
        grid-template-columns: 1fr;
        grid-template-rows: 1fr 1fr;
      
        font-size: 0.8em; // You can change fraction size here. I recommend 0.5em ~ 0.8em
        vertical-align: top;
      }
      
      numer {
        border-bottom: 1px solid;
      }
      

      您现在可以像这样使用标签:

      Add 1 <fraction> <numer>1</numer> 2 </fraction> cups of flour into the bowl and stir.
      

      输出

      我还建议对屏幕阅读器输出使用只读格式:

      CSS

      read {
        position: absolute;
        font-size: 0;
      }
      

      HTML

      1 <fraction> <read>and</read> <numer>1</numer> <read>over</read> 2 </fraction>
      

      屏幕阅读器:“一加一二...”

      【讨论】:

        猜你喜欢
        • 2019-02-04
        • 2023-03-28
        • 1970-01-01
        • 2023-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多