Font scaling based on width of container

后端 未结 30 2966
面向向阳花
面向向阳花 2020-11-21 04:35

I\'m having a hard time getting my head around font scaling.

I currently have a website with a body font-size of 100%. 100% of what though? This seems t

30条回答
  •  [愿得一人]
    2020-11-21 05:19

    EDIT: If the container is not the body CSS Tricks covers all of your options in Fitting Text to a Container.

    If the container is the body, what you are looking for is Viewport-percentage lengths:

    The viewport-percentage lengths are relative to the size of the initial containing block. When the height or width of the initial containing block is changed, they are scaled accordingly. However, when the value of overflow on the root element is auto, any scroll bars are assumed not to exist.

    The values are:

    • vw (% of the viewport width)
    • vh (% of the viewport height)
    • vi (1% of the viewport size in the direction of the root element's inline axis)
    • vb (1% of the viewport size in the direction of the root element's block axis)
    • vmin (the smaller of vw or vh)
    • vmax (the larger or vw or vh)

    1 v* is equal to 1% of the initial containing block.

    Using it looks like this:

    p {
        font-size: 4vw;
    }
    

    As you can see, when the viewport width increases, so do the font-size, without needing to use media queries.

    These values are a sizing unit, just like px or em, so they can be used to size other elements as well, such as width, margin, or padding.

    Browser support is pretty good, but you'll likely need a fallback, such as:

    p {
        font-size: 16px;
        font-size: 4vw;
    }
    

    Check out the support statistics: http://caniuse.com/#feat=viewport-units.

    Also, check out CSS-Tricks for a broader look: Viewport Sized Typography

    Here's a nice article about setting minimum/maximum sizes and exercising a bit more control over the sizes: Precise control over responsive typography

    And here's an article about setting your size using calc() so that the text fills the viewport: http://codepen.io/CrocoDillon/pen/fBJxu

    Also, please view this article, which uses a technique dubbed 'molten leading' to adjust the line-height as well. Molten Leading in CSS

提交回复
热议问题