2017-05-16 14 views
2

난 Facett-Checkbox가있는 사이드 바가 있습니다. 사이드 바의 폭이 변경 될 수 있으며 제 통제하에 있지 않습니다. 공간 절약을 위해 한 줄에 체크 박스, 설명 및 결과 수가 필요합니다.오버플로가있는 단일 행 고정 된 내용의 왼쪽 및 고정 된 내용으로 된 줄임표

수는 사이드 바 내부에서 오른쪽 정렬되어야하며 체크 박스는 왼쪽에 있어야합니다. 설명은 남은 공간을 오버플로로 가져와야합니다. 접근성을위한 줄임표.

해결책은 css에만 적합합니다. 가능하지 않으면 js도 사용할 수 있습니다. HTML 나은 설명 업데이트 : exemple 코드에 대한

https://jsfiddle.net/z9d8qjsb/7/

HTML

<div class="sidebar_a"> 
<div class="row"> 
    <input id="ckb" type="checkbox" /> 
    <label for="ckb"> 
     <span class="text">Description that can be verry long and should use ellipsis</span> 
     <span class="count">(xxxx)</span> 
    </label> 
    </div> 
    <div class="row"> 
    <input id="ckb" type="checkbox" /> 
    <label for="ckb"> 
    <span class="text">Short Desc.</span> 
     <span class="count">(xxxx)</span> 
    </label> 
    </div> 
</div> 
<div class="sidebar_b"> 
    <div class="row"> 
    <input id="ckb" type="checkbox" /> 
    <label for="ckb"> 
     <span class="text">Description that can be verry long and should use ellipsis</span> 
     <span class="count">(xxxx)</span> 
    </label> 
    </div> 
    <div class="row"> 
    <input id="ckb" type="checkbox" /> 
    <label for="ckb"> 
    <span class="text">Short Desc.</span> 
     <span class="count">(xxxx)</span> 
    </label> 
    </div> 
</div> 

CSS

.sidebar_a { 
    width: 500px; 
    } 

    .sidebar_b { 
    width: 100px; 
    } 

    .sidebar_a, .sidebar_b { 
    border: 2px solid black; /*only for illustration*/ 
    } 

    .row { 
    position: relative; 
    } 
.text { 
    overflow: hidden; 
    text-overflow: ellipsis; 
    text-align: left; 
    width: 70%; 
    white-space: nowrap; 
    display: inline-block; 
    vertical-align: middle; 
} 

.count { 
    position: absolute; 
} 

UPDATE를 참조하십시오.

답변

0

.sidebar { 
 
    // width: 200px; 
 
    border; 
 
    2px solid black; 
 
    position: relative; 
 
} 
 

 
.row { 
 
    position: relative; 
 
} 
 

 
.text { 
 
    overflow: hidden; 
 
    text-overflow: ellipsis; 
 
    text-align: left; 
 
    white-space: nowrap; 
 
    width: 200px; 
 
    display: inline-block; 
 
    vertical-align: middle; 
 
    position: relative; 
 
} 
 

 
.count { 
 
    right: 5px; 
 
    position: absolute; 
 
} 
 

 
#ckb { 
 
    float: left; 
 
    width: auto; 
 
    margin-top:6px; 
 
} 
 

 
label { 
 
    float: left; 
 
    width: auto; 
 
    position: relative; 
 
    width: 300px; 
 
}
<div class="sidebar"> 
 
    <div class="row"> 
 
    <input id="ckb" type="checkbox" /> 
 
    <label for="ckb"> 
 
     <span class="text">Description that can be verry long and should use ellipsis</span> 
 
     <span class="count">(xxxx)</span> 
 
    </label> 
 
    </div> 
 
</div>

+0

사이드 바의 폭이 아니며, 내 제어. 불행히도 나는 이것을 가져갈 수 없습니다. – pitterleg

+0

그러면 코드가 정확히 어떻게 작동합니까? – user3766508

+0

사이드 바는 drupal 템플릿의 일부입니다. 템플릿을 변경하면 세로 막대의 너비가 변경됩니다. 하지만 내 코드는 모든 폭에서 꽤 보일 것입니다. – pitterleg

0

당신은 내가 당신을 위해 작업을 생각 마이너스의 right 속성을 변경하려면이

.count { 
    right: -5px; 
    position: absolute; 
} 

처럼 할 수는

+0

너비를 사용하면 상자 밖에서 카운트가 발생합니다. – pitterleg

+0

그런 다음'.text' 클래스 폭을 50 % 또는 원하는만큼 줄이십시오. – LKG

+0

.text 클래스에서 사용 가능한 최대 공간을 사용하고 싶습니다. 사이드 바의 범위는 100px에서 600px입니다. 수는 1에서 수백만까지 다양합니다. – pitterleg