2016-07-11 6 views
0

다른 옵션을 클릭 할 때 텍스트가 확장되도록하는 훌륭한 옵션을 제공하는 몇 가지 코드를 발견했습니다. 확장/축소 기능, 나는 우리 모두가 그들과 다소 친숙하다고 생각합니다.확장 텍스트 내에서 텍스트 확장하기

내가 주로 관심을 갖고있는 것은 내가 이미 다른 줄에서 확장 한 텍스트 블록에서 텍스트 표시를 확장 할 수 있습니까? 줄을 클릭하면 다시 클릭 할 수있는 다른 줄이 표시되고 전에 볼 수 없었던 세 번째 줄이 표시됩니다.

어쨌든 가능합니까? 사전에 시간을내어 의견을 보내 주셔서 감사합니다.

+4

* 책, 도구, 소프트웨어 라이브러리, 자습서 또는 기타 오프 사이트 리소스를 추천하거나 찾도록 요청하는 질문은 유치 경향이있는 스택 오버플로에 대한 주제와 관련이 없습니다. 독창적 인 답변 및 스팸 대신 문제를 설명하고 지금까지 해결 된 문제를 설명하십시오. * – Script47

+0

이 뜻입니까? http://www.w3schools.com/css/tryit.asp?filename=trycss_display_js – mlegg

+0

비슷하지만 실제로는 그렇지 않습니다. 내가 말했듯이 내가 찾고있는 것은 확장 된 텍스트에서 텍스트를 확장하는 방법입니다. 내가 할 수있는 것처럼 간단히 말하면 : 나는 텍스트 a를 가지고 텍스트 a와 텍스트 b를 보여주고 그 다음에 텍스트 b와 텍스트 c를 클릭한다. 그래서 저는 2 단계를 말하고 있습니다. 하나는 텍스트 a 안에 텍스트 b를 드러내고, 그 전에는 보이지 않는 텍스트 b 안에 텍스트 c를 드러내는 것입니다. –

답변

0

당신은 이런 식으로 뭔가를 시도 할 수 있습니다 : https://jsfiddle.net/julienetienne/41g9f1pt/1/

키는 인덱스를 얻는 것입니다, 내가 배열로 노드 목록을 넣어 선호, 당신은 최고 수준의 기능을 사용할 수 있습니다 그런 식으로.

var section = document.getElementsByTagName('section')[0]; 
 
var sectionArray = [].slice.call(section.children); 
 
var lastElement; 
 

 
section.addEventListener('click', showHide, true); 
 

 
function showHide(e) { 
 
    var target = e.target; 
 
    var indexOfSection = sectionArray.indexOf(target); 
 
    var elementToToggleHeight; 
 
    // If element is a paragraph 
 
    if (target.tagName === 'P') { 
 
    var elementToToggle = section.children[indexOfSection + 1]; 
 

 
    if(indexOfSection + 1 < sectionArray.length){ 
 
     elementToToggleHeight = parseInt(window.getComputedStyle(elementToToggle, null).getPropertyValue("height"),10); 
 
     } 
 

 
    if (elementToToggleHeight) { 
 
     // Function to close all except current and first 
 
     sectionArray.forEach(function(paragraph){ 
 
     if(paragraph !== target && paragraph !== sectionArray[0]){ 
 
     paragraph.style.height = 0; 
 
     } 
 
     }); 
 

 
    } else { 
 
     if(elementToToggle) 
 
     elementToToggle.style.height = '1em'; 
 
    } 
 
    } 
 
}
p { 
 
    font-size: 1em; 
 
    cursor: pointer; 
 
    height: 0; 
 
    overflow: hidden; 
 
    background: yellowgreen; 
 
    -webkit-transition: all 0.5s ease; 
 
    -moz-transition: all 0.5s ease; 
 
    -o-transition: all 0.5s ease; 
 
    transition: all 0.5s ease; 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 

 
p:first-child { 
 
    height: auto; 
 
}
<section> 
 
    <p>The path of the righteous man is beset on all sides</p> 
 
    <p>by the inequities of the selfish and the tyranny of evil men</p> 
 
    <p>And I will strike down upon thee with great </p> 
 
    <p>vengeance and furious anger those who would attempt</p> 
 
    <p>to poison and destroy my brothers</p> 
 
</section>

+0

와우, 정말 멋지다 !! 도와 주셔서 대단히 감사합니다. 만약 당신이 주위에 있었다면, 지금은 그것을 만들었는지 모르겠군요. 첫 번째와 현재의 단락을 제외하고 단락을 접는 방법을 추가 한 방법이 마음에 듭니다. 당신은 내게 엄청난 도움을주었습니다. 제 검색 시도 전에는 왜 그렇게 멋진 코드가 없었는지 궁금합니다. 저를 믿으십시오. 나는이 문제에 대한 오랜 시간 동안 대답을 찾으려고 노력했습니다. 어쨌든, 한 번 더 감사와 좋은 하루 되세요! :) –

+0

probs가 없습니다. 방금 만들었지 만, 그걸 가지고 놀아 볼만한 가치가 있을지도 모르겠다. 어쩌면 display : none/block보다는 height를 사용했을 수도있다. 또는 심지어 불투명. 그렇지 않은 경우 더 나은 패딩을 사용할 수 있도록 각 태그를 배치 할 가치가 있습니다. 혹시 문제가 생기면 알려주세요. 뭔가 요리 할게요.당신도 리차드;) – Undefined

+0

작은 버그를 발견했습니다. 재현 단계 : 5 줄의 텍스트를 모두 엽니 다. 3rd를 클릭하십시오. 모든 라인이 붕괴되지만 첫 번째와 세 번째입니다. –

0

난 당신이 jQuery를 태그 볼, 그래서 그것을 사용하여 작은 정말 간단한 예 https://jsfiddle.net/alienpavlov/khk40ygm/2/ 쓰기 : 내가 만든이 거친 데모는 IE8 지원을위한 polyfill 또는 두 가지가 필요합니다

$('.expand').click(function(e) { 
 
    e.stopPropagation(); 
 
    var $expand = $(this).children('.expand.hide'); 
 
    if ($expand.length >= 1) { 
 
     $expand.removeClass('hide'); 
 
    } else { 
 
     $(this).find('.expand').addClass('hide'); 
 
    } 
 
});
div { 
 
    padding: 15px; 
 
} 
 

 
.hide { 
 
    display: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
 
<div class="expand"> 
 
    Some parent text 
 
    <div class="expand hide"> 
 
     1st level child 
 
     <div class="expand hide"> 
 
      2n level child 
 
     </div> 
 
    </div> 
 
</div>

이 예제에서는 2 개 이상의 자식 요소를 가질 수 있습니다

+1

지금은 아직 경험이 없다는 것이 분명하지만, 관심있는 요소를 사용하는 데 자신감이 있습니다. 이 기능을 제공 해주셔서 대단히 감사합니다. 기본적으로 이것이 내가 찾고있는 것이고 해결책은 생각보다 훨씬 간단합니다! 정말 작고 단순하지만 간단 함은 쉽게 편집 할 수 있다는 것을 의미합니다. –