我發現了幾個代碼,提供了很棒的選項,可以在點擊另一個文字時展開文字。展開/摺疊功能,我相信我們都有點熟悉它們。在展開文字中展開文字
但是我主要感興趣的是,我怎樣才能擴大文本顯示從我已經從另一行擴展的文本塊? 我的意思是,我會點擊一條線,它會顯示另一條線,我可以再次點擊,並顯示出第三條線之前根本不可見的線。
這有可能以任何方式?非常感謝您提前爲您提供的任何反饋意見!
我發現了幾個代碼,提供了很棒的選項,可以在點擊另一個文字時展開文字。展開/摺疊功能,我相信我們都有點熟悉它們。在展開文字中展開文字
但是我主要感興趣的是,我怎樣才能擴大文本顯示從我已經從另一行擴展的文本塊? 我的意思是,我會點擊一條線,它會顯示另一條線,我可以再次點擊,並顯示出第三條線之前根本不可見的線。
這有可能以任何方式?非常感謝您提前爲您提供的任何反饋意見!
你可以嘗試這樣的事情:https://jsfiddle.net/julienetienne/41g9f1pt/1/
的關鍵是要獲得索引,我喜歡把節點列表分爲數組,這樣你可以使用一流的功能。 這種粗糙的演示中,我提出需要對IE8的支持填充工具或兩個:
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>
哇,這是超級整潔!非常感謝你的幫助,我不知道你是否有這種情況,或者剛剛創建它,如果後者的情況那麼該死的,與我相比你非常熟練。我喜歡你如何添加函數來摺疊段落,除了第一個和當前的!你已經幫了我很大的忙,我想知道爲什麼在我的搜索嘗試之前沒有這樣一個真棒代碼...相信我,我確實試圖找到一個解決這個問題的時間。無論如何,再次感謝一堆,祝你有美好的一天! :) –
沒有probs。我現在只是創建它,但我不得不說它可能是值得玩的,也許通過使用display:none/block而不是height。甚至不透明。 如果不是,它可能是值得包裝每個標籤,所以你可以使用更好的填充。如果你有任何問題,請告訴我,我會做點什麼。你也是理查;) – Undefined
我發現了一個小錯誤。重現步驟:打開全部5行文字。點擊第三。所有線路都會倒塌,但第一和第三。 –
我看到你所標記的jQuery,所以我寫的小非常簡單的例子https://jsfiddle.net/alienpavlov/khk40ygm/2/使用它:
$('.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>
在這個例子中,你可以有兩個以上的子元素
我想現在很明顯,我還沒有太多經驗,但我有信心使用感興趣的元素。非常感謝你提供這個,基本上這就是我正在尋找的東西,解決方案比我想象的簡單得多!它確實很小很簡單,但簡單也意味着它很容易編輯,所以這太棒了! –
*問題要求我們推薦或找到一本書,工具,軟件庫,教程或其他非本地資源,因爲它們傾向於吸引Stack Overflow自發的答案和垃圾郵件。相反,請描述問題以及迄今爲止解決問題所做的工作。* – Script47
你是說這個嗎? http://www.w3schools.com/css/tryit.asp?filename=trycss_display_js – mlegg
類似的排序,但實際上並不完全。正如我所說,我正在尋找的是從擴展文本擴展文本的方法。因此,儘可能簡單地說:我有文本a,我點擊文本a和文本b顯示,然後點擊文本b和文本c顯示,這在之前沒有顯示。所以我說了兩個步驟。一種是在文本a中揭示文本b,然後揭示文本b中的文本c,而這些文本根本不可見。 –