我正在使用jqueryInputToken和act-as-taggable-on gem。我能够使后端工作。但是,作为使用jqueryTokenInput插件的一部分,我的text_area变得如此纤薄,看起来更像是一个很小的text_field。 下面是我的text_area看起来像jQueryInput插件而没有悬停的图片:
当您将“X”符号悬停以删除标签时,如下图所示:
我想修改css,以便text_area变大,令牌看起来如下所示:
我应该如何修改下面的css以达到text_field和标记所需的外观?
这是css:
/* Example tokeninput style #2: Mac Style */
fieldset.token-input-mac {
position: relative;
padding: 0;
margin: 5px 0;
background: #fff;
width: 400px;
border: 1px solid #A4BDEC;
border-radius: 10px;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
}
fieldset.token-input-mac.token-input-dropdown-mac {
border-radius: 10px 10px 0 0;
-moz-border-radius: 10px 10px 0 0;
-webkit-border-radius: 10px 10px 0 0;
box-shadow: 0 5px 20px 0 rgba(0,0,0,0.25);
-moz-box-shadow: 0 5px 20px 0 rgba(0,0,0,0.25);
-webkit-box-shadow: 0 5px 20px 0 rgba(0,0,0,0.25);
}
ul.token-input-list-mac {
position: relative;
overflow: hidden;
height: auto !important;
cursor: text;
font-size: 12px;
min-height: 1px;
z-index: 999;
margin: 0;
padding: 0;
background: transparent;
}
ul.token-input-list-mac.error {
border: 1px solid #C52020;
}
ul.token-input-list-mac li {
list-style-type: none;
}
li.token-input-token-mac p {
display: inline;
padding: 0;
margin: 0;
}
li.token-input-token-mac span {
color: #231C34;
margin-left: 5px;
font-weight: bold;
cursor: pointer;
}
/* TOKENS */
li.token-input-token-mac {
position: relative;
display: inline-block;
width: auto !important;
font-size: 8pt;
line-height: 12pt;
margin: 0px 3px 3px 0px;
padding: 4px 10px;
background: none;
background-color: #0F004E;
color: #fefefe;
cursor: default;
float: left;
font-weight: bold;
}
li.token-input-highlighted-token-mac {
background-color: #231C34;
color: #fefefe;
font-weight: bold;
}
li.token-input-selected-token-mac {
background-color: #231C34;
color: #fefefe;
font-weight: bold;
}
li.token-input-highlighted-token-mac span.token-input-delete-token-mac {
color: #fefefe;
font-weight: bold;
}
li.token-input-selected-token-mac span.token-input-delete-token-mac {
color: #fefefe;
font-weight: bold;
}
li.token-input-input-token-mac {
border: none;
background: transparent;
float: left;
padding: 0;
margin: 0;
}
li.token-input-input-token-mac input {
width: 100px;
padding: 3px;
margin: 0;
}
div.token-input-dropdown-mac {
position: absolute;
border-top: none;
left: -1px;
right: -1px;
background-color: #fefefe;
overflow: hidden;
cursor: default;
font-size: 10pt;
}
div.token-input-dropdown-mac p {
font-size: 8pt;
margin: 0;
padding: 0 10px;
color: #fff;
}
div.token-input-dropdown-mac h3.token-input-dropdown-category-mac {
font-size: 10pt;
font-weight: bold;
border: none;
padding: 0 5px;
margin: 0;
}
div.token-input-dropdown-mac ul {
margin: 0;
padding: 0;
}
div.token-input-dropdown-mac ul li {
list-style-type: none;
cursor: pointer;
background: none;
background-color: #fefefe;
margin: 0;
padding: 0 0 0 10px;
color: #999;
text-transform: uppercase;
}
div.token-input-dropdown-mac ul li.token-input-dropdown-item-mac span.token-input-dropdown-item-description-mac {
float: right;
font-size: 8pt;
font-style: italic;
padding: 0 10px 0 0;
color: #999;
text-transform: uppercase;;
}
div.token-input-dropdown-mac ul li strong {
font-weight: bold;
text-decoration: underline;
color: #999;
text-transform: uppercase;
}
div.token-input-dropdown-mac ul li.token-input-selected-dropdown-item-mac,
div.token-input-dropdown-mac ul li.token-input-selected-dropdown-item-mac.odd {
background: #0F004E;
color: #bb8322; //Official Red
text-transform: uppercase;
font-weight: bold;
}
div.token-input-dropdown-mac ul li.token-input-selected-dropdown-item-mac:hover,
div.token-input-dropdown-mac ul li.token-input-selected-dropdown-item-mac.odd:hover,
div.token-input-dropdown-mac ul li.token-input-selected-dropdown-item-mac:focus,
div.token-input-dropdown-mac ul li.token-input-selected-dropdown-item-mac.odd:focus {
color: #fff;
}
div.token-input-dropdown-mac ul li.token-input-selected-dropdown-item-mac span.token-input-dropdown-item-description-mac,
div.token-input-dropdown-mac ul li.token-input-selected-dropdown-item-mac.odd span.token-input-dropdown-item-description-mac {
color: #fff;
}
答案 0 :(得分:0)
我一直在努力做这样的事情并且至少有一个粗略的版本,所以我会把它放在这里,以防它有用。我使用了Facebook主题 - 看起来你使用了不同的主题。我提到这一点,因为这会影响我的答案中的类名。另外我认为Facebook可能更像是你所追求的(见下面的化妆品)。
我将它分成两部分:首先是结构部分,然后是化妆品部分。
我的部分问题是由于令牌输入代码用自己的一些代替了HTML。我写了这个HTML
<div id="searchBar">
<input type="text" id="bigTextInput" />
</div>
&#13;
以及insert-token-input-here调用的组合:
$("#bigTextInput").tokenInput(token_url, {
theme: 'facebook',...
并且用户输入了一些内容,使其看起来像这样(带有我的评论):
<div id="searchBar">
<ul class="token-input-list-facebook">
<li class="token-input-token-facebook"> <!-- one of these per user input -->
<p>first thing the user entered
<span class="token-input-delete-token-facebook">X</span></p></li>
<li class="token-input-token-facebook">
<p>second thing the user entered
<span class="token-input-delete-token-facebook">X</span></p></li>
<li class="token-input-input-token-facebook"> <!-- 1 on the end for entering the next selection -->
<input id="token-input-Y"> <!-- Y = whatever Id you gave to the original input (bigTextInput in my case) -->
</li>
</ul>
<input id=Y display:none /> <!-- the thing you created, but then is hidden and replaced by the ul etc. -->
</div>
&#13;
我创建的input
已被隐藏起来,取而代之的是ul
,用户输入的每件li
额外li
1}}让用户添加更多东西。
要成功更改高度,我必须在ul
上设置我想要的高度:
$("ul.token-input-list-facebook").height(newHeight + "px");
我从一个大盒子开始,但如果用户只输入少量东西,这看起来并不好。所以我想我会尝试从小开始(单线高)然后按需增长。
为此,我确保ul
不会创建滚动条:
ul.token-input-list-facebook {
overflow-x: hidden;
overflow-y: hidden;
}
&#13;
然后如果内容溢出,我会重新调整大小。我通过在令牌输入的添加和删除事件中添加处理程序来检查溢出:
$("#bigTextInput").tokenInput(token_url, {
theme: 'facebook',
onAdd: function(){
growSearchBoxSizes();
},
onDelete: function(){
shrinkSearchBoxSizes();
}
});
&#13;
我发现在growSearchBoxSizes
中检测到溢出的最佳方法是比较封闭div的offsetHeight
和scrollHeight
属性:
var heightA = parseFloat($("#searchBar")[0].offsetHeight);
var heightB = parseFloat($("#searchBar")[0].scrollHeight);
&#13;
我建议您将这些内容写入console.log,尝试输入时显示的内容并且不会溢出,并且当它们显示存在溢出时,需要添加1行高度的代码
我无法想出一个很好的方法来检测何时缩小(例如在用户删除了一行的东西之后),所以在删除处理程序中我缩小了框降低到它的起始大小,然后将其恢复到所需的任何高度,即直到没有溢出。 (一个黑客,但它似乎工作。)
实际上,由于wanting to prevent what the user had already entered from showing up in the auto-completion list for later inputs,我已经在使用处理程序来添加和删除事件,您可能还需要考虑这些事件。
我之所以建议您可能想要切换到Facebook主题的原因是它始终根据您的需要提供X.颜色和形状不是你想要的,但我希望这应该只是在CSS中定义覆盖的问题。