Html 样式选择文本溢出

Html 样式选择文本溢出,html,css,twitter-bootstrap-3,Html,Css,Twitter Bootstrap 3,正在尝试找出样式化选择框的问题。它被包装在一个具有背景的div中,以创建它的遮罩外观 当输入中有太多文本时,它将溢出到按钮中 HTML: 有人能解决这个问题吗?问题是,您使用的是正确填充:10%

正在尝试找出样式化选择框的问题。它被包装在一个具有背景的div中,以创建它的遮罩外观

当输入中有太多文本时,它将溢出到按钮中

HTML:


有人能解决这个问题吗?

问题是,您使用的是
正确填充:10%上选择
本身。测量图像-选择的宽度约为
270px
,使
宽度的
10%
仅为
27px
,根据我的测量,这是正确的

为了解决这个问题,箭头的
背景图像似乎是
60px
宽的,所以使用
右填充:78px
(即背景图像的
宽度
60px
18px
,以尊重您之前设置的移动媒体查询中的
填充)。

尝试以下操作:

.styled-select select {
  white-space: nowrap; 
  width: 10em; 
  overflow: hidden;
  text-overflow: ellipsis;
}
您好: 这是我的解决方案,您应该接受一个变量,它将是“向下箭头”的BG大小。在本例中,60px,因此如下所示:

.styled-select select{
  width: calc( 100% - 60px / 2); //before was width: 100%;
  text-overflow: ellipsis;
}

@media (min-width: 768px) {
  .styled-select select {
    width:100%; //remove it, only one in the mobile first declarationis needed
  }
}

保持所有其他CSS相同,仅更改上述CSS希望这有帮助

在没有看到任何代码的情况下,很难判断如何设置HTML的结构。但你可以做的一件事就是捏造它。让它看起来好像这就是正在发生的事情。假设下拉箭头与选择项是一个单独的元素,您可以给它一些以下代码。(.select button是我在下拉列表中为您的按钮指定的类)

}

基本上,这是把它放在输入文本元素的前面,然后框阴影会逐渐覆盖额外的文本

如果您需要在不改变原始元素的情况下对其进行篡改,请在其内部创建一个包含div或其他内容的父包装器,并使select元素成为同级元素,然后为其提供指针事件样式:none;为了防止它被点击,但仍然会有你想要的外观

有些人可能会说这是一种不好的做法,但鉴于目前的情况,这是你能做的最好的事情。非常简单,非常轻,比提供的许多选项更实用

如果你有任何问题,就喊一声

祝你好运,伙计


评论后 根据评论中的信息尝试此css。最好创建一个带有背景色、bg图像和方框阴影的psuedo元素,其z索引高于选择,以创建一个仍然可以单击选择的假按钮

.styled-select { 
    /*have this create the size of the select*/
    width: 100%; 
    overflow: hidden; 
    background-repeat: no-repeat;
    -webkit-background-size: 80% 80%;
    background-size: 80% 80%;
    height: 50px;
    position: relative;
}
.style-select::before {
    content: '';
    display: block;
    position: absolute;
    right: 0;
    background-color: $blue;
    top: 50%;
    transform: translateY(-50%);
    width: 60px;
    height: 100%;
    background: url(../images/bg/down-arrow.jpg); 
    /* ^^^^ use this as just the white arrow png ^^^ */
    box-shadow: -24px 0px 30px rgba(255, 255, 255, 1);
    pointer-events: none;
}

您正在使用百分比值(10%)作为
select
元素在两个不同位置的
padding right
。但是,对于
.styled select
元素的
背景大小
属性,您使用的是固定像素值(60px)

这意味着,当
.styled select
元素的宽度正好为600px时,子
select
元素的文本将在
背景图像开始处被剪裁-越大,您将开始看到文本和图像之间出现空白,越小,文本将开始与图像重叠

因此,要解决这个问题,您应该将
右填充
更改为一个固定的像素值,该值等于
背景大小
值加上几个额外的像素,以便文本不会直接运行到
背景图像

我还冒昧地清理了一下你的CSS;您不需要重新声明媒体查询中的所有样式,只需声明您希望覆盖或更改的样式

.styled选择{
背景:#fff线性梯度(0度,#00f,#00f)右/60px重复-y;
/**删除上面的行,取消下面的行注释**/
/*背景:#fff url(../images/bg/down arrow.jpg)右中/60px不重复*/
边界半径:10px;
高度:50px;
溢出:隐藏;
宽度:100%;
}
.样式选择{
-webkit外观:无;
背景:透明;
边界:0;
边界半径:10px;
字体系列:圆形、Helvetica、Arial、无衬线;
字体大小:16px;
高度:50px;
线高:1;
填充:15px 75px 15px 15px;
宽度:100%;
}
@介质(最小宽度:768px){
.样式选择{
高度:55px;
}
.样式选择{
字号:18px;
高度:55px;
线高:1;
右边填充:78px;
}
}
身体{
背景:#003;
}

请选择地址
见此

.styled选择{
字体系列:“圆形”,Helvetica,Arial,无衬线;
字号:18px;
背景:透明;
宽度:100%;
填充:15px;
字体大小:16px;
线高:1;
边界:0;
高度:50px;
边框:1px实心#0082ff;/*仅用于查看白色背景中的窗体区域*/
边界半径:10px;
-webkit外观:无;
右边填充:55px;
框大小:边框框;
}
.styled选择{
宽度:200px;
溢出:隐藏;
背景:url(http://emojipop.net/data/images/emoji_set_651.png)无重复右#FFF;
背景尺寸:50px;
高度:50px;
边界半径:10px;
文本溢出:省略号;
}
@介质(最小宽度:768px){
.样式选择{
字体系列:“圆形”,Helvetica,Arial,无衬线;
字号:18px;
背景:透明;
宽度:100%;
填充:18px;
字号:18px;
线高:1;
边界:0;
高度:55px;
边界半径:10px;
-webkit外观:无;
右:10%;
}
.styled选择{
宽度:100%;
溢出:隐藏;
背景:url(http://emojipop.net/data/images/emoji_set_651.png)无重复右#FFF;
背景尺寸:60px;
高度:55px;
边界半径:10px;
}

请选择地址
请选择地址2
请选择地址3

如果文本太多,您希望发生什么-隐藏ove
.styled-select select{
  width: calc( 100% - 60px / 2); //before was width: 100%;
  text-overflow: ellipsis;
}

@media (min-width: 768px) {
  .styled-select select {
    width:100%; //remove it, only one in the mobile first declarationis needed
  }
}
.selectButton {
display: block;
position: absolute;
height: 100%;
width: 20%;
max-width: 40px;
background: blue;
z-index: 12;
right: 0;
top: 0;
box-shadow: -24px 0px 30px rgba(255, 255, 255, 1);
.styled-select { 
    /*have this create the size of the select*/
    width: 100%; 
    overflow: hidden; 
    background-repeat: no-repeat;
    -webkit-background-size: 80% 80%;
    background-size: 80% 80%;
    height: 50px;
    position: relative;
}
.style-select::before {
    content: '';
    display: block;
    position: absolute;
    right: 0;
    background-color: $blue;
    top: 50%;
    transform: translateY(-50%);
    width: 60px;
    height: 100%;
    background: url(../images/bg/down-arrow.jpg); 
    /* ^^^^ use this as just the white arrow png ^^^ */
    box-shadow: -24px 0px 30px rgba(255, 255, 255, 1);
    pointer-events: none;
}