【问题标题】:Why are these pages with identical style tags producing different font-sizes?为什么这些具有相同样式标签的页面会产生不同的字体大小?
【发布时间】:2019-09-05 02:36:48
【问题描述】:

我有两个几乎相同的网页。实际上,我复制了第一个的代码并将其保存为第二个,然后才修改了第二个中的一些元素。样式标签中的样式完全一样。他们显示不同的字体大小,我不知道为什么。

如果我不关心我应该做什么(例如使用样式表)或挑剔我的代码(除非它实际上回答了问题),有人可以解释为什么我使用相同的方式得到两种不同的样式样式标签?

附: - 我知道我可以摆弄并让他们都拥有相同的风格,但这让我发疯,不知道为什么会这样。相信我,如果不是因为我对理解我不理解的事物的痴迷渴望,我现在已经让它们看起来一样了。

附言- 按照this question 的回答中的建议,为视口添加元标记对我不起作用。

---详情---

options.php,所需的样式,在 LG 手机上的移动 Chrome 中看起来像这样...下面的屏幕截图来自 Opera (Chrome) DevTools,其中设备工具栏在 Galaxy S5 上处于打开状态效仿。 (这些截图正是我在我的真实设备 LG 手机上看到的):

admin.php,具有明显更小的字体大小。在这些屏幕截图中很难看到,但顶部的 img 保持完全相同的大小。另外,请注意两个屏幕截图的宽度相同:

options.php 的代码(php 渲染它):

$admin_str = "<div class=\"a-div\"><a href=\"admin.php\">Admin Options</a></div>";

$body = "
    <div id=\"hero-img\">
       <img src=\"imgs/logo.png\">
    </div>
    <h1>Hi $esc_fName!</h1>
    <h2 id=\"subheading\">What would you like to do next?</h2>
    <div class=\"a-div\"><a href=\"abcde.php\">Record------</a></div>
    <div class=\"a-div\"><a href=\"fghij.php\">Manage -----</a></div>
    <div class=\"a-div\"><a href=\"manage.php\">Manage my account information</a></div>
    <div class=\"a-div\"><a href=\"klmnop.php\">Add a ----</a></div>
    $admin_str
    <div class=\"a-div\"><a href=\"logout.php\">Log out</a></div>
        ";
    echo <<<_END
        <!DOCTYPE html>
        <html lang="en">
            <head>
                <title>------- Options</title>
                <meta charset='UTF-8'>
                <style>
                    body {                                  
                        font-family: sans-serif;
                        font-size: 100%;
                    }
                    #main-content {
                        width: 75%;
                        margin: 40px auto;
                    }
                    #hero-img {
                        width: 50%;
                        margin: 50px auto;
                    }
                    #subheading {
                        margin-bottom: 50px;
                    }
                    .a-div {
                        display: block;
                        margin-top: 20px;
                    }
                    a {
                        font-size: 21pt;
                        color: #000055;
                        text-decoration: none;
                    }
                    a:hover {
                        color: blue;
                    }
                    a:active {
                        background-color: #333333;
                        color: #E70B81;
                    }
                </style>
            </head>
            <body>
                <div id="main-content">
                    $body
                </div>
            </body>
        </html>
_END;

admin.php 的代码(php 也渲染它):

$body = "
    <div id=\"hero-img\">
        <img src=\"imgs/dtlogo.png\">
    </div>
    <h1>Hi $esc_fName!</h1>
    <h2 id=\"subheading\">Administrative Options</h2>
    <div class=\"a-div\"><a href=\"appremails.php\">Add a new approved email</a></div>
    <div class=\"a-div\"><a href=\"options.php\">Back to main options</a></div>
    <div class=\"a-div\"><a href=\"logout.php\">Log out</a></div>
    ";

    echo <<<_END
        <!DOCTYPE html>
        <html lang="en">
            <head>
                <title>Administrative Options</title>
                <meta charset='UTF-8'>
                <style>
                    body {                                  
                        font-family: sans-serif;
                        font-size: 100%;
                    }
                    #main-content {
                        width: 75%;
                        margin: 40px auto;
                    }
                    #hero-img {
                        width: 50%;
                        margin: 50px auto;
                    }
                    #subheading {
                        margin-bottom: 50px;
                    }
                    .a-div {
                        display: block;
                        margin-top: 20px;
                    }
                    a {
                        font-size: 21pt;
                        color: #000055;
                        text-decoration: none;
                    }
                    a:hover {
                        color: blue;
                    }
                    a:active {
                        background-color: #333333;
                        color: #E70B81;
                    }
                </style>
            </head>
            <body>
                <div id="main-content">
                    $body
                </div>
            </body>
        </html>
_END;

UPDATE -- 根据 Donkey Shame 的要求,这里是计算出来的字体大小:

_______________________________
|______|  1st pg.  |  2nd pg.  |
|______|___________|___________|
|  h1  |  40.133px |   32px    |
|______|___________|___________|
|  h2  |  36.133px |   24px    |
|______|___________|___________|
|  a   |  38.133px |   28px    |
|______|___________|___________|

更新 #2 -- 正如 Dejan 建议的那样,我尝试在桌面模式下查看这两个网站,即使在移动设备上查看时它们并不相同,它们也是相同的。

更新#3 --经过一些修改,我让两个页面在移动设备上查看时具有相同的样式。当然,我从不怀疑我会这样做,它仍然没有回答我关于原始代码的原始问题,但它实际上可能帮助我将其缩小到一个非常具体的罪魁祸首。这就是我所做的。我从body 中完全删除了font-size。然后我将h1h2 都更改为divs。我编辑了样式标签以反映那些新的divs。然后我将font-size: 5vw 设置为#heading div(旧的h1)。我为#subheading div(旧的h2)设置了font-size: 3.022727vw(稍后会详细介绍3.022727)。我为a 元素设置了font-size: 3.5vw这又是奇怪的地方:如果我在两个样式标签中将 3.022727vw 更改为 3.022726vw,则第一页几乎没有变化(这是应该预期的),但第二页会这样做(注意#subheading 如何改变a 标签的字体大小):

admin.php - #subheading { font-size: 3.022727vw; }

admin.php - #subheading { font-size: 3.022726vw; }

【问题讨论】:

  • $admin_str 包含什么?
  • @kerbholz 我刚刚用您要求的信息编辑了问题
  • 在 chrome、safari(如果可用)、opera 和 firefox 中尝试时,桌面视图中的尺寸如何?
  • 真是令人头疼。您能否在开发工具中查看计算得出的字体大小样式并报告两个页面之间的差异(如果有)?
  • 我要补充一点,我刚刚从这两个页面复制了样式标签,并编写了一个快速的 php 程序来测试相等性,它们完全相同 (===) 相等。仅供参考。

标签: php html css


【解决方案1】:

我认为问题在于将正文字体大小应用为 100%。有两种解决问题的方法:将font-size: 100%; 替换为font-size: 1rem;font-size: 16px; Bootstrap 例如使用font-size: 1rem;

如果它不能帮助打开浏览器的 Devtools,请打开一个较小字体大小的页面并检查字体大小和文本。它可能会被一些其他样式覆盖。

<style>
  body {                                  
    font-family: sans-serif;
    font-size: 1rem;
  }

【讨论】:

  • 我一直认为body { font-size: 100%; } 真的很奇怪,但我在某处读到这是一个很好的做法。 耸耸肩 我不知道。无论如何,我尝试了font-size: 1rem,但不幸的是并没有解决问题。
  • 那么font-size: 16 px; 呢?
  • 浏览器确实知道。它将采用其设置中的任何内容。如果您使用font-size: 16px;,则用户无法根据需要设置更高的字体大小,这是不好的做法。 font-size: 100%; 将设置为默认 16 像素。您可以执行font-size: 1rem;,它将成为“根”,即浏览器设置。 @snoski
【解决方案2】:

这似乎是一个用户代理扩展问题。避免此类问题的解决方案是在&lt;head&gt; 部分(is it necessary?)中添加viewport meta tag

<meta name="viewport" content="width=device-width, initial-scale=1">

没有视口标签:

两个页面都有视口标签:

【讨论】:

  • 我在发布最初的问题之前尝试过这个(正如你在我的问题的措辞中看到的那样)。它导致了更多的不可预测性,所以我认为它不起作用。然而,现在它似乎已经完全解决了这个问题。但是,您仍然没有回答我的问题...为什么我在完全相同的设备上查看时会使用相同的样式标签获得两种不同的样式?如果你愿意回答这个问题,我会选择这个作为接受的答案。
  • @snoski 我离开 CSS 和手机有一段时间了,但是添加视口元通常是 css+mobile 教程教你做的第一件事。没有它,浏览器将尝试通过缩小来“适应”屏幕上的页面。
  • 我很抱歉在这里陷入泥潭。我非常感谢您提供的信息。我已经阅读了所有内容,现在我确信这个标签很重要。但是,我仍然不明白为什么由同一服务器提供的具有相同样式标签的两个几乎相同的页面在同一设备上的同一浏览器中呈现不同。我不明白缺少这个标签(当两个页面都没有标签时)应该如何导致两种不同的渲染。
猜你喜欢
  • 2013-07-24
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 2016-09-14
  • 2023-03-11
  • 1970-01-01
  • 2018-09-06
相关资源
最近更新 更多