我的表格是用满足的跨度制作的,我的问题是在焦点上我的跨度不是垂直对齐更好地说,插入符号不在跨度的中间。我希望它在中间并且完全可见,但也具有可扩展的宽度,因此跨度不应该是显示:阻止既不内联。
图片:http://i62.tinypic.com/125kri8.jpg这是我想要的中间问题,但插入符必须完全可见
DEMO :http://jsfiddle.net/hqf8apwr/
HTML
<form action="">
<ul class=form-input>
<li>
<span class="input-span" contenteditable="true" data-width=30 data-placeholder="Vaše meno"></span>
</li>
<li>
<span class="input-span" contenteditable="true" data-width=30 data-placeholder="Spoločnosť"></span>
</li>
<li>
<span class="input-span" contenteditable="true" data-width=30 data-placeholder="Pracovná pozícia"></span>
</li>
<li>
<span class="input-span" contenteditable="true" data-width=30 data-placeholder="Telefónne číslo"></span>
</li>
<li>
<span class="input-span" contenteditable="true" data-width=30 data-placeholder="Emailová adresa"></span>
</li>
</ul>
</form>
CSS
li {
list-style: none;
}
form {
text-align: center;
position: relative;
left: -100px;
}
form > ul {
margin: 0 auto;
}
form > ul > li {
height: 60px;
line-height: 60px;
display: inline-block;
font-size: 1.2em;
}
form .form-label {
text-align: right;
padding-right: 25px;
color: black;
}
form .form-input {
text-align: left;
width: 200px;
position: absolute;
top: 0;
}
form .form-input li {
height: 60px;
}
form .form-input span {
font-size: 1em;
border-bottom: 2px solid orange;
padding: 15px 20px;
margin-bottom: -20px;
white-space: nowrap;
display: inline-block;
height: 20px;
line-height: 20px;
max-width: 260px;
overflow-x: hidden;
background: #fff;
color: #000;
}
form .form-input span.input-span[contenteditable]:focus {
display: inline-block;
font-size: 1em;
padding-top: 20px;
padding-bottom: 40px;
overflow: hidden;
background: orange;
color: #fff;
margin-top: 2px;
padding-bottom: 20px;
}
form .form-input span.input-span[contenteditable]:empty::before {
content: attr(data-placeholder);
}
form .form-input span.input-span[contenteditable]:empty:focus::before {
content: '';
}
答案 0 :(得分:0)
答案 1 :(得分:0)
修复插入位置的一种简单方法是将填充移动到li
元素。结果并不完全相同 - 例如,底部边框占据整个宽度而不是占位符文本的宽度,而蓝色轮廓仅在文本上 - 但通过一些调整,您可以获得想要的结果。
li
{
padding: 15px 20px;
border-bottom: 2px solid orange;
}
.form-input span {
font-size: 1em;
color: #000;
white-space: nowrap;
display: inline-block;
height: 20px;
line-height: 20px;
}
http://jsfiddle.net/564hjw8w/1/
修改
如果你想保持轮廓,你只需要给你的跨度宽度。您也可以给它一个偏移量,使它具有与以前相同的外观。但请注意,Internet Explorer
不支持outline-offset .form-input span.input-span[contenteditable]:focus
{
width: 100px;
outline-offset: 15px;
}
答案 2 :(得分:0)
通过从height
移除固定的padding
和span
,您可以获得一些体面的外观。并且仅在padding
上使用margin
和/或li
来控制您的间距(按照Julien 的建议,)。但是,继续在border-bottom
上使用span
为其提供可变宽度效果。
以下是一个示例小提琴:http://jsfiddle.net/abhitalks/s3jmqh20/3/
在IE-11,GC-43,FF-38和AS-5.1.7中进行测试(FF显示垂直偏移,当内容不存在时,输入内容并自行更正。无法解决此问题)
这也允许您更改font-size
而不必担心太多间距。尝试更改小提琴/片段中的大小。
<强> 段 强>:
* { box-sizing: border-box; margin: 0; padding: 0; }
ul.form-input { text-align: left; width: 200px; list-style: none; margin-left: 12px; }
ul.form-input li { margin: 6px 0px; padding: 12px 0px; }
ul.form-input span {
display: inline-block; color: #000; white-space: nowrap;
padding: 0px 16px; border-bottom: 2px solid orange;
font-size: 1em; line-height: 2em;
}
ul.form-input span.input-span[contenteditable]:empty::before { content: attr(data-placeholder); }
ul.form-input span.input-span[contenteditable]:empty:focus::before { content:'\00a0 '; }
ul.form-input span.input-span[contenteditable]:focus { background-color: orange; color: #fff; }
&#13;
<form action="">
<ul class=form-input>
<li><span class="input-span" contenteditable="true" data-width=30 data-placeholder="Vaše meno"></span></li>
<li><span class="input-span" contenteditable="true" data-width=30 data-placeholder="Spoločnosť"></span></li>
<li><span class="input-span" contenteditable="true" data-width=30 data-placeholder="Pracovná pozícia"></span></li>
<li><span class="input-span" contenteditable="true" data-width=30 data-placeholder="Telefónne číslo"></span></li>
<li><span class="input-span" contenteditable="true" data-width=30 data-placeholder="Emailová adresa"></span></li>
</ul>
</form>
&#13;