如何正确对齐 <label>、<input>、文本、输入字段、真实按钮和“<a> link 按钮”并使用相同的字体?
How can I align <label>,<input>, text, input fields, a real button, and a "<a> link button" properly and with the same font?
我的问题(简要):
我希望文本用户名、您为用户名键入的文本、真实按钮文本 "or" 和 Link 按钮文本大小完全相同且位于相同的 "line" -他们排的不是很顺...
我试过自己解决这个问题吗?其他缩放问题
我花了相当多的时间试图使它尽可能接近完美,但是,据我所知,我永远无法让它满意。当我在网站的其他部分工作时,我放弃了好几个月,但它应该是可能的,这是我心中的一根刺。我在使用缩放时也遇到了问题 - 在某些缩放中它看起来非常接近完美我认为 "That's as good as I can get it!".
我将其从我的网站中删除,以使代码尽可能小。如果您查看结果 - 用户名(您键入的用户名),"Real Button" 和 "or" 以及 "Link Button" 都是不同的高度......它似乎没有流动不错
此外,如果将 2 个按钮放在彼此的顶部,则 SIGN 一词的宽度不同。如果我使用相同的字体、相同的大小、相同的一切,为什么 1 个比另一个宽?不同的字母间距?
虽然我确实放弃了,但最近我从 Stack 看到另一个 fiddle 有点解决了问题,但没有标签,也没有排列所有内容。此代码基于该代码。我想,如果这个问题可以解决,我会用所有响应式设计等将其重新设计到我的网站中...
之前的部分解决方案:
过去我使用 tables 并且事情似乎排列得更好但我试图不为此使用 tables 因为你不应该为这样的创建一个 table HTML.
的短线
JSFIDDLE:
我创建了一个 JSFiddle,所以你可以看到。
http://jsfiddle.net/PerryCS/7zc2vjmx/2/
HTML 代码:
<form id="loginForm1" name="loginForm1?callingPage=validateForm" method="post" action="index.php" accept-charset="utf-8">
<h5 class="text-center">In order to access some areas of the website, save estimates.</h5>
<div class="mydiv">
<label for="username">Username</label>
<input type="text" id="username" name="username">
</div>
<div class="mydiv">
<label for="pword">Password</label>
<input type="password" id="pword" name="pword">
</div>
<div class="mydiv">
<input class="button" type="button" name="buttonSignIn" value="SIGN IN"> or
<a class="button" href="#">SIGN UP</a>
</div>
</form>
CSS 代码
body {
font-size: 1em;
font-family: Verdana, Arial, Helvetica, sans-serif;
}
input.button {
height: 28px;
font-size: 1em;
color: white;
font-weight: normal;
font-style: normal;
background: #4D28B2;
border: 1px solid gray;
vertical-align: middle;
padding: 0px 5px;
}
a.button {
display: inline-block;
height: 28px;
font-size: 1em;
color: white;
text-decoration: none;
font-weight: normal;
font-style: normal;
text-align: left;
background-color: #4D28B2;
border: 1px solid gray;
vertical-align: middle;
line-height: 28px;
padding: 0px 5px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
}
input {
height: 28px;
font-size: 1em;
text-decoration: none;
font-weight: normal;
font-style: normal;
text-align: left;
background-color: #4D28B2;
border: 1px solid gray;
vertical-align: middle;
line-height: 28px;
padding: 0px 5px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
}
.mydiv {
display: inline-block;
}
感谢您的宝贵时间
我提前感谢您在过去几年中花时间帮助我成长。您 guys/gals 帮助我解决了一些问题,非常感谢您的帮助。 :)
为具有相同设置的所有这些元素创建 CSS 规则,并添加 vertical-align: baseline
。这应该将所有文本排列在同一基线上,如果字体系列、字体大小、字体粗细、字体变化等相同,它应该看起来像你想要的那样。
为了我对你的 fiddle 的分叉,我刚刚添加了这个(影响 .mydiv
内的所有元素):
.mydiv * {
display: inline-block;
vertical-align: baseline;
font-family: Arial sans-serif !important;
font-size: 1em !important;
}
这是 link 到 fiddle:http://jsfiddle.net/f03jvuqb/
在摆弄这个并且不是 100% 满意之后...我研究了 Flex Box,它现在在大多数浏览器中都很流行。使用 Flex Box 的效果非常好,而且代码更简洁。一切都安排得很漂亮,我对结果很满意。在所有这些修补过程中,我学到了很多东西。改天我有时间的时候再post Flex Box 代码。
我的问题(简要): 我希望文本用户名、您为用户名键入的文本、真实按钮文本 "or" 和 Link 按钮文本大小完全相同且位于相同的 "line" -他们排的不是很顺...
我试过自己解决这个问题吗?其他缩放问题 我花了相当多的时间试图使它尽可能接近完美,但是,据我所知,我永远无法让它满意。当我在网站的其他部分工作时,我放弃了好几个月,但它应该是可能的,这是我心中的一根刺。我在使用缩放时也遇到了问题 - 在某些缩放中它看起来非常接近完美我认为 "That's as good as I can get it!".
我将其从我的网站中删除,以使代码尽可能小。如果您查看结果 - 用户名(您键入的用户名),"Real Button" 和 "or" 以及 "Link Button" 都是不同的高度......它似乎没有流动不错
此外,如果将 2 个按钮放在彼此的顶部,则 SIGN 一词的宽度不同。如果我使用相同的字体、相同的大小、相同的一切,为什么 1 个比另一个宽?不同的字母间距?
虽然我确实放弃了,但最近我从 Stack 看到另一个 fiddle 有点解决了问题,但没有标签,也没有排列所有内容。此代码基于该代码。我想,如果这个问题可以解决,我会用所有响应式设计等将其重新设计到我的网站中...
之前的部分解决方案: 过去我使用 tables 并且事情似乎排列得更好但我试图不为此使用 tables 因为你不应该为这样的创建一个 table HTML.
的短线JSFIDDLE: 我创建了一个 JSFiddle,所以你可以看到。
http://jsfiddle.net/PerryCS/7zc2vjmx/2/
HTML 代码:
<form id="loginForm1" name="loginForm1?callingPage=validateForm" method="post" action="index.php" accept-charset="utf-8">
<h5 class="text-center">In order to access some areas of the website, save estimates.</h5>
<div class="mydiv">
<label for="username">Username</label>
<input type="text" id="username" name="username">
</div>
<div class="mydiv">
<label for="pword">Password</label>
<input type="password" id="pword" name="pword">
</div>
<div class="mydiv">
<input class="button" type="button" name="buttonSignIn" value="SIGN IN"> or
<a class="button" href="#">SIGN UP</a>
</div>
</form>
CSS 代码
body {
font-size: 1em;
font-family: Verdana, Arial, Helvetica, sans-serif;
}
input.button {
height: 28px;
font-size: 1em;
color: white;
font-weight: normal;
font-style: normal;
background: #4D28B2;
border: 1px solid gray;
vertical-align: middle;
padding: 0px 5px;
}
a.button {
display: inline-block;
height: 28px;
font-size: 1em;
color: white;
text-decoration: none;
font-weight: normal;
font-style: normal;
text-align: left;
background-color: #4D28B2;
border: 1px solid gray;
vertical-align: middle;
line-height: 28px;
padding: 0px 5px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
}
input {
height: 28px;
font-size: 1em;
text-decoration: none;
font-weight: normal;
font-style: normal;
text-align: left;
background-color: #4D28B2;
border: 1px solid gray;
vertical-align: middle;
line-height: 28px;
padding: 0px 5px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
}
.mydiv {
display: inline-block;
}
感谢您的宝贵时间 我提前感谢您在过去几年中花时间帮助我成长。您 guys/gals 帮助我解决了一些问题,非常感谢您的帮助。 :)
为具有相同设置的所有这些元素创建 CSS 规则,并添加 vertical-align: baseline
。这应该将所有文本排列在同一基线上,如果字体系列、字体大小、字体粗细、字体变化等相同,它应该看起来像你想要的那样。
为了我对你的 fiddle 的分叉,我刚刚添加了这个(影响 .mydiv
内的所有元素):
.mydiv * {
display: inline-block;
vertical-align: baseline;
font-family: Arial sans-serif !important;
font-size: 1em !important;
}
这是 link 到 fiddle:http://jsfiddle.net/f03jvuqb/
在摆弄这个并且不是 100% 满意之后...我研究了 Flex Box,它现在在大多数浏览器中都很流行。使用 Flex Box 的效果非常好,而且代码更简洁。一切都安排得很漂亮,我对结果很满意。在所有这些修补过程中,我学到了很多东西。改天我有时间的时候再post Flex Box 代码。