- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我问这里是因为我数学很烂。
假设网格大小为 1920 像素,并且我没有使用显式大小调整。
即有多少 fr。 1200 像素?我如何计算它?
.grid {
display: grid;
grid-template-columns: 1fr 3.3335fr 1fr;
}
规范说:
12.7.1. Find the Size of an
fr
This algorithm finds the largest size that an fr unit can be without exceeding the target size. It must be called with a set of grid tracks and some quantity of space to fill.
- Let leftover space be the space to fill minus the base sizes of the non-flexible grid tracks.
- Let flex factor sum be the sum of the flex factors of the flexible tracks. If this value is less than 1, set it to 1 instead.
- Let the hypothetical fr size be the leftover space divided by the flex factor sum.
- If the product of the hypothetical fr size and a flexible track’s flex factor is less than the track’s base size, restart this algorithm treating all such tracks as inflexible.
- Return the hypothetical fr size.
他们的意思是“假设的 fr 大小”是单位 (1fr)?我想是的
1920/(1+3.3335+1) = 359.988750352 <-- The hypothetical fr size
359.988750352 * 3.3335 = 1200.0224993
所以我想这是一种获取有多少像素是 n fr 值的方法。
但是,如果我想反其道而行之,这将是计算 1200px 有多少 fr 的正确方法/正确公式?
更新:
这是我正在做的一个活生生的例子。 minmax(min, max)
对我帮助很大。我已经解决了一些溢出的错误。并想出了如何在网格模板轨道中使用 rem 单位但仍然受益于缩小 :D
https://codepen.io/jeflopo/pen/OmZBEJ
/**********************************/
/* BODY - THE MAIN GRID CONTAINER */
/**********************************/
/**********************************/
/* DEFINING GRID AREAS */
/**********************************/
.header {
grid-area: header;
}
.navigation {
grid-area: nav;
}
.main {
grid-area: main;
}
.posts {
grid-area: posts;
}
.sidebar {
grid-area: sidebar;
}
.footer {
grid-area: footer;
}
/**********************************/
/* HOW HAS GRID AREAS TO BEHAVE ? */
/**********************************/
/* I'VE LET THEM TO SHRINK TO 0 AND I WILL CONTROL IT WITH MEDIA QUERIES
SETTING `min` of minmax(min, max) to 0 DRASTICALLY PREVENTS THE LAYOUT TO OVERFLOW WHEN RESIZING THE WINDOW.
*/
.header,
.navigation,
.main,
.footer {
display: grid;
grid-template-columns: 1fr minmax(0, 120rem) 1fr;
}
.main .container {
display: grid;
grid-gap: 1rem;
grid-template-columns: minmax(0, 120rem) 30rem;
grid-template-areas: "posts sidebar";
margin: 0;
padding: 1rem 0;
}
.main .posts {
grid-column: 1/2;
padding: 1rem;
}
.main .sidebar {
grid-column: 2/3;
padding: 1rem;
}
/**********************************/
/* CONTENT WRAPPER */
/**********************************/
/* THESE GRID AREAS (header, main, and footer) OCCUPY FULL TRACKS.
I USE THIS TO CONSTRAINT THE CONTENT OF GRID AREAS TO THE CENTER COLUMN IN THE MAIN GRID. */
.container {
grid-column: 2/3;
}
/******************************************/
/* SOME BASIC STYLING PRESETS */
/******************************************/
html {
font-size: 10px;
}
body {
font-family: 'Open Sans', sans-serif;
font-size: 1.6rem;
margin: 0;
padding: 0;
}
a {
text-decoration: none;
color: #00f;
}
ul {
margin: 0;
padding: 0;
list-style-type: none;
}
li {
display: inline;
}
li a {
color: #fff;
}
.header {
background: #888;
}
.navigation {
background: #666;
}
.posts {
background: #f66;
}
.sidebar {
background: #6f6;
}
.footer {
background: #888;
}
<header class="header">
<div class="container">
<div class="header__logo">
<a href="#"><h1>LOGO</h1></a>
</div>
</div>
</header>
<nav class="navigation">
<ul class="container">
<li><a href="#">Item 1</a></li>
<li><a href="#">Item 2</a></li>
<li><a href="#">Item 3</a></li>
</ul>
</nav>
<main class="main" role="main">
<div class="container">
<section class="posts">
<article class="post">
<h1>This is a title</h1>
<p>This is the body of an article</p>
</article>
</section>
<aside class="sidebar">
<span>SIDEBAR</span>
</aside>
</div>
</main>
<footer class="footer">
<div class="container">
<p>FOOTER</p>
</div>
</footer>
最佳答案
您有一个网格容器,沿 X 轴或 Y 轴(无关紧要)有 1200 像素的自由空间。
如果容器有一个网格轨道设置为 1fr
,该列/行将占用全部 1200px。
如果您有 grid-template-columns: 1fr 1fr
,那么每列将获得平均分配的可用空间。因此每列的宽度为 600 像素,类似于:
grid-template-columns: 600px 600px
在您的情况下,它是这样工作的:
It must be called with a set of grid tracks and some quantity of space to fill.
您已使用此规则调用网格轨道:
grid-template-columns: 1fr 3.3335fr 1fr
您要填充的空间是 1200px。
- Let leftover space be the space to fill minus the base sizes of the non-flexible grid tracks.
同样,要填充的空间(“剩余空间”)是 1200px。
没有非灵活的网格轨道。这就像设置为 200px 的列:
grid-template-columns: 1fr 3.3335fr 200px 1fr
fr 算法会减去那条 200 像素的轨道。剩余空间可供 fr 使用。
- Let flex factor sum be the sum of the flex factors of the flexible tracks.
这意味着我们将 fr
值相加:
1 + 3.3335 + 1 = 5.3335
flex 因子总和为 5.3335。
- Let the hypothetical fr size be the leftover space divided by the flex factor sum.
1200 像素/5.3335fr = 225 像素
现在我们知道每个 fr
单位代表 225px。
1fr
= 225px2fr
= 450px3fr
= 675px这意味着:
grid-template-columns: 1fr 3.3335fr 1fr
相当于:
grid-template-columns: (1fr x 225px) (3.3335fr x 225px) (1fr x 225px)
结果是:
grid-template-columns: 225px 750.0375px 225px
不过,请务必注意,fr
单元并非旨在为网格轨道设置特定长度。它的工作是分配容器中的空闲空间(类似于 flexbox 的 flex-grow
)。所以你的问题似乎有点理论化和不切实际。如果容器的大小发生了轻微的调整,或者混合中加入了不灵活的轨道,则上述所有像素计算都会被取消。
更新(基于评论)
There's an small error. My grid size is 1920px not 1200... But its an extrapolable example. I wanted 3.3335fr relate to 1200px, and not to be the sum of all tracks... 3.3335fr are ~1200px with two adjacent 1fr columns in a grid thats 1920px width.
如果网格容器的宽度为 1920px,则假设的 fr 大小为 360px。
这意味着:
grid-template-columns: (1fr x 360px) (3.3335fr x 360px) (1fr x 360px)
结果是:
grid-template-columns: 360px 1200px 360px
关于css - 计算 fr 单位的实际长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43944078/
我有一个名为 main.css 的 css 文件和另一个名为 style.css 的文件。我怎样才能在 main.css 中做到这一点? .someClass { //apply rules to
在更新我的 css 之前,我在 Login.css 中有以下内容: body { background-image: url('./pictures/fond.png'); bac
我的 share point 2013 核心 css 和我的 css 之间存在 css 冲突。所以我想把我所有的类都放在 div #s4-workspace 下但是我搜索了一种方法来将所有类分组到这个
我知道您可以覆盖 jsp 页面从 jsp 包含 CSS 文件(即全局 CSS 文件)继承的 CSS 属性。 但是,如果元素中的某个属性弄乱了特定页面,而我不想只使用内联 CSS 在该页面中使用它怎么办
我刚刚发现了 initial-scale 元属性。 以前,我一直在使用 default.css 来定义我所有的样式和大小(用于字体和元素),以便它们在桌面计算机的屏幕上显示得很好。然后,如果您使用的是
我正在尝试使用 LESS CSS 来编写我的 CSS。我已经按顺序导入了 style.less 和 less.js 文件。 现在我想提取 LESS 生成的 CSS。有什么办法可以做到吗?我不想使用脚本
我想知道是否有任何一种软件可以读取大量内联样式中的 HTML 文档并将所有这些样式转换为外部 css 文件。如果只有一页,我可以手动完成。但是有100页。有人有想法吗? 最佳答案 就像有人说的那样,“
当我想从 Styled Components 迁移到 CSS Modules 时,出现了以下问题。 假设我有以下样式组件,它接受动态参数 offset和一个动态 CSS 字符串 theme : con
有没有办法将 CSS 类定义为与另一个类相等?例如,如果我有一个类: .myClass{ background-color: blue; } 有没有一种方法可以将第二个类定义为与 myClas
我正在尝试制作一组按钮,这些按钮贴在页面底部并且由固定的空间隔开。我正在使用 angularJS 的 ng-repeat 指令通过 ajax 请求获取数据,然后我用它来显示按钮。 我的问题在于让按
浏览器是否在加载 CSS 文件时解析 CSS?还是在整个 CSS 文件被浏览器下载后才进行解析?不同浏览器的做法有区别吗?我在哪里可以找到这种底层信息? 这个问题不是 Load and executi
这个问题在这里已经有了答案: Can a CSS class inherit one or more other classes? (29 个答案) 关闭 3 年前。 标题有点乱,我给大家看一下。假
我遇到了最奇怪的问题...... 在最简单的形式中,我有一个包含以下内容的 index.html 文件: (在尝试确定根本原因的过程中,我已经大大减少了它) 当我查看页面的源代码时,我得到以下信息:
我正在使用 Mindscape Workbench 来最小化我的 scss 文件。我的页面设置为使用 *.min.css 文件。在随机时间,min 文件不会与系统的其余部分一起发布。 我有很多 css
请告诉我 CSS 框架和 CSS 网格之间的区别。 最佳答案 CSS 框架也可以是 CSS 网格框架。 CSS 网格框架用于构建 CSS 布局。有一些框架除了构建布局还有其他用途,例如 Hartija
我有无法从页面中删除或更改的 original.css 文件。原始.css table { border-collapse: collapse; border-spacing: 0;
我以前使用 bootstrap css import 很好。 但是我正在尝试使用 CSS 模块,所以我添加了几行。 { test: /\.css$/, use:
有没有办法在 css 选择器中创建一个 css 组。 例如: .SectionHeader { include: .foo; include: .bar; include: .
今天我学习了 CSS 中的两个概念,一个是 CSS 定位(静态、相对、绝对、固定),另一个是 CSS Margin,它定义了元素之间的空间。 假设我想移动一个元素,这是最好的方法吗?因为这两个概念似乎
var paths = { css: './public/apps/user/**/*.css' } var dest = { css: './public/apps/user/css/' } /
我是一名优秀的程序员,十分优秀!