如何设置图标的百分比高度,并将其垂直居中,同时向左浮动?
How do I set the percent height of an icon, and vertically center it, while left-floating it?
以 HTML 为中心及其变体当然已被询问和回答
innumerable
.
不过,我遇到了基本问题。
.banner_box {
width: 640px; height: 150px;
background-color: #ddd;
margin: 5px;
display: flex;
align-items: center;
}
.left_center_myicon {
display: block;
margin: 0 auto;
float: left;
/*height: 100%;*/
}
<div class="banner_box">
<img class="left_center_myicon" src="myicon.svg" />
</div>
<div class="banner_box">
<a href="index.html"><img class="left_center_myicon" src="myicon.svg" /></a>
</div>
其中 myicon.svg
由一个矩形组成:
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="30pt" height="15pt" viewBox="0 0 400 200" version="1.1">
<g style="fill:rgb(10%,40%,70%);fill-opacity:1;">
<rect x="100" y="50" rx="20" ry="20" width="200" height="100" />
</g>
</svg>
尽管我在 left_center_myicon
的两个实例上都指定了 float: left
,但只有在 <a>
标签内时它才会向左浮动。
现在我的图标很小了。我可以通过添加 height: 100%
轻松地使其填充 banner_box
的高度。在下方 banner_box
中,当然使图标 100%
只是锚点。
如何设置图标的百分比高度,并使其垂直居中,同时向左浮动?
简而言之,我可以将图标左居中
或放大到一定比例
但不是两者。
.banner_box {
width: 640px; height: 140px;
max-height:140px;
background-color: #ddd;
margin: 5px;
display: flex;
justify-content: center;
align-items: center;
}
.left_center_myicon {
display: block;
margin: 0 auto;
float: left;
}
.fab{
font-size: 50px;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="github.css">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.7/css/all.css">
</head>
<body>
<div class="banner_box">
<p class="left_center_myicon"><i class="fab fa-audible"></i></p>
</div>
<div class="banner_box">
<p class="left_center_myicon"><i class="fab fa-audible"></i></p>
</div>
</body>
</html>
我不完全明白你的问题,但这是我最好的猜测。您正在尝试使 SVG 变大或变小,您可以通过 CSS 中的 font-size 属性来实现。尝试在我上面添加的代码中更改 .fab 的字体大小。我使用了来自 font-awesome 的 SVG 我希望这是你问的。
某些对象及其属性在放置在某些元素标签中时显示不同,例如您在 img 标签周围的标签。
我对此有一个建议和修复,但请注意,这只是针对您拥有的元素,还有其他方法可以实现您的需要,但这里有一个针对您的问题的修复。
(步数:)
我建议将 'text-align:center' 添加到 '.banner_box' 以居中对齐可能添加的任何其他元素(例如文本)并增加额外的兼容性。
然后将 'display:flex' 属性 更改为 'display:block' 因为 'flex' 是高度百分比不起作用的原因,因为它使用固定高度值以便flex,例如 100px 而不是 100% 并且在大多数情况下还需要 flex-direction 等。
然后,在 '.left_center_myicon' 上要在垂直中心对齐项目同时保持浮动,您可以添加 'position:relative' 然后添加 'top:50%' & 'left:50%' 将顶部和左侧位置值设置为 'banner_box 宽度和高度的一半 (50%)。然后添加“转换:翻译(-50%,-50%);”设置元素沿 banner_box 的 x/y 轴的准确位置。在此之后,如果您愿意,也可以删除 'display:block',因为位置和轴已设置,除非您需要它来做其他事情。
两个元素现在都应该位于绝对中心,同时保持浮点值并使用高度 % 值。
我也在 codepen 上创建了这个:
https://codepen.io/JJCrook/pen/PoKWjWW
HTML:
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="30pt" height="15pt" viewBox="0 0 400 200" version="1.1">
<g style="fill:rgb(10%,40%,70%);fill-opacity:1;">
<rect x="100" y="50" rx="20" ry="20" width="200" height="100" />
</g>
</svg>
<div class="banner_box">
<img class="left_center_myicon" src="https://jcrooktesting.000webhostapp.com/mysvg.svg" />
</div>
<div class="banner_box">
<a href="index.html"><img class="left_center_myicon" src="https://jcrooktesting.000webhostapp.com/mysvg.svg" /></a>
</div>
CSS:
.banner_box {
width: 640px;
height: 150px;
background-color: #ddd;
margin: 5px;
align-items:center;
display: block;
text-align:center;
}
.left_center_myicon {
margin: 0 auto;
float: left;
height: 70%;
position: relative;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
*修订 CSS:(更改 .left_center_myicon)
left: 0;
transform: translate(0%, -50%);
代码笔已更新
以 HTML 为中心及其变体当然已被询问和回答
innumerable
不过,我遇到了基本问题。
.banner_box {
width: 640px; height: 150px;
background-color: #ddd;
margin: 5px;
display: flex;
align-items: center;
}
.left_center_myicon {
display: block;
margin: 0 auto;
float: left;
/*height: 100%;*/
}
<div class="banner_box">
<img class="left_center_myicon" src="myicon.svg" />
</div>
<div class="banner_box">
<a href="index.html"><img class="left_center_myicon" src="myicon.svg" /></a>
</div>
其中 myicon.svg
由一个矩形组成:
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="30pt" height="15pt" viewBox="0 0 400 200" version="1.1">
<g style="fill:rgb(10%,40%,70%);fill-opacity:1;">
<rect x="100" y="50" rx="20" ry="20" width="200" height="100" />
</g>
</svg>
尽管我在 left_center_myicon
的两个实例上都指定了 float: left
,但只有在 <a>
标签内时它才会向左浮动。
现在我的图标很小了。我可以通过添加 height: 100%
轻松地使其填充 banner_box
的高度。在下方 banner_box
中,当然使图标 100%
只是锚点。
如何设置图标的百分比高度,并使其垂直居中,同时向左浮动?
简而言之,我可以将图标左居中
或放大到一定比例
但不是两者。
.banner_box {
width: 640px; height: 140px;
max-height:140px;
background-color: #ddd;
margin: 5px;
display: flex;
justify-content: center;
align-items: center;
}
.left_center_myicon {
display: block;
margin: 0 auto;
float: left;
}
.fab{
font-size: 50px;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="github.css">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.7/css/all.css">
</head>
<body>
<div class="banner_box">
<p class="left_center_myicon"><i class="fab fa-audible"></i></p>
</div>
<div class="banner_box">
<p class="left_center_myicon"><i class="fab fa-audible"></i></p>
</div>
</body>
</html>
我不完全明白你的问题,但这是我最好的猜测。您正在尝试使 SVG 变大或变小,您可以通过 CSS 中的 font-size 属性来实现。尝试在我上面添加的代码中更改 .fab 的字体大小。我使用了来自 font-awesome 的 SVG 我希望这是你问的。
某些对象及其属性在放置在某些元素标签中时显示不同,例如您在 img 标签周围的标签。
我对此有一个建议和修复,但请注意,这只是针对您拥有的元素,还有其他方法可以实现您的需要,但这里有一个针对您的问题的修复。
(步数:) 我建议将 'text-align:center' 添加到 '.banner_box' 以居中对齐可能添加的任何其他元素(例如文本)并增加额外的兼容性。
然后将 'display:flex' 属性 更改为 'display:block' 因为 'flex' 是高度百分比不起作用的原因,因为它使用固定高度值以便flex,例如 100px 而不是 100% 并且在大多数情况下还需要 flex-direction 等。
然后,在 '.left_center_myicon' 上要在垂直中心对齐项目同时保持浮动,您可以添加 'position:relative' 然后添加 'top:50%' & 'left:50%' 将顶部和左侧位置值设置为 'banner_box 宽度和高度的一半 (50%)。然后添加“转换:翻译(-50%,-50%);”设置元素沿 banner_box 的 x/y 轴的准确位置。在此之后,如果您愿意,也可以删除 'display:block',因为位置和轴已设置,除非您需要它来做其他事情。
两个元素现在都应该位于绝对中心,同时保持浮点值并使用高度 % 值。
我也在 codepen 上创建了这个: https://codepen.io/JJCrook/pen/PoKWjWW
HTML:
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="30pt" height="15pt" viewBox="0 0 400 200" version="1.1">
<g style="fill:rgb(10%,40%,70%);fill-opacity:1;">
<rect x="100" y="50" rx="20" ry="20" width="200" height="100" />
</g>
</svg>
<div class="banner_box">
<img class="left_center_myicon" src="https://jcrooktesting.000webhostapp.com/mysvg.svg" />
</div>
<div class="banner_box">
<a href="index.html"><img class="left_center_myicon" src="https://jcrooktesting.000webhostapp.com/mysvg.svg" /></a>
</div>
CSS:
.banner_box {
width: 640px;
height: 150px;
background-color: #ddd;
margin: 5px;
align-items:center;
display: block;
text-align:center;
}
.left_center_myicon {
margin: 0 auto;
float: left;
height: 70%;
position: relative;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
*修订 CSS:(更改 .left_center_myicon)
left: 0;
transform: translate(0%, -50%);
代码笔已更新