admin管理员组文章数量:1298180
In jQuery I know how to solve this, but in pure Javascript I don't have any idea.
When click on chevron down my content show, but when show I want to change chevron to be chevron up.
I don't know how to do an 'on click' to change the style and set the following:
transform: rotate(180deg);
.
Toggle effect, when click again to return chevron down and repeatly.
JSFiddle
HTML:
<p>
Lorem ipsum dolor sit amet consedier tu Lorem ipsum dolor sit amet consedier tu Lorem ipsum dolor sit amet consedier tu Lorem ipsum dolor sit amet consedier tu Lorem ipsum dolor sit amet consedier tu Lorem ipsum dolor sit amet consedier tu Lorem ipsum dolor sit amet consedier tu Lorem ipsum dolor sit amet consedier tu Lorem ipsum dolor sit amet consedier tu
</p>
<div id="show-more-footer" onclick="myFunction()">
<i class="fa fa-chevron-down" aria-hidden="true"></i>
</div>
<div id="full-text">
<div class="col-sm-3">
<ul>
<li><a href="#">Seo Link</a></li>
<li><a href="#">Seo Link nummer</a></li>
<li><a href="#">Number 3 Seo Link</a></li>
<li><a href="#">Seo</a></li>
</ul>
</div>
<div class="col-sm-3">
<ul>
<li><a href="#">Seo Link</a></li>
<li><a href="#">Seo Link nummer</a></li>
<li><a href="#">Number 3 Seo Link</a></li>
<li><a href="#">Seo</a></li>
<li><a href="#">Number 5</a></li>
</ul>
</div>
<div class="col-sm-3">
<ul>
<li><a href="#">Seo Link</a></li>
<li><a href="#">Seo Link nummer</a></li>
<li><a href="#">Number 3 Seo Link</a></li>
<li><a href="#">Seo</a></li>
</ul>
</div>
</div>
JS:
function myFunction() {
var x = document.getElementById('full-text');
if (x.style.display === 'block') {
x.style.display = 'none';
} else {
x.style.display = 'block';
}
}
CSS:
#show-more-footer{
cursor:pointer;
}
#full-text{
display:none;
}
In jQuery I know how to solve this, but in pure Javascript I don't have any idea.
When click on chevron down my content show, but when show I want to change chevron to be chevron up.
I don't know how to do an 'on click' to change the style and set the following:
transform: rotate(180deg);
.
Toggle effect, when click again to return chevron down and repeatly.
JSFiddle
HTML:
<p>
Lorem ipsum dolor sit amet consedier tu Lorem ipsum dolor sit amet consedier tu Lorem ipsum dolor sit amet consedier tu Lorem ipsum dolor sit amet consedier tu Lorem ipsum dolor sit amet consedier tu Lorem ipsum dolor sit amet consedier tu Lorem ipsum dolor sit amet consedier tu Lorem ipsum dolor sit amet consedier tu Lorem ipsum dolor sit amet consedier tu
</p>
<div id="show-more-footer" onclick="myFunction()">
<i class="fa fa-chevron-down" aria-hidden="true"></i>
</div>
<div id="full-text">
<div class="col-sm-3">
<ul>
<li><a href="#">Seo Link</a></li>
<li><a href="#">Seo Link nummer</a></li>
<li><a href="#">Number 3 Seo Link</a></li>
<li><a href="#">Seo</a></li>
</ul>
</div>
<div class="col-sm-3">
<ul>
<li><a href="#">Seo Link</a></li>
<li><a href="#">Seo Link nummer</a></li>
<li><a href="#">Number 3 Seo Link</a></li>
<li><a href="#">Seo</a></li>
<li><a href="#">Number 5</a></li>
</ul>
</div>
<div class="col-sm-3">
<ul>
<li><a href="#">Seo Link</a></li>
<li><a href="#">Seo Link nummer</a></li>
<li><a href="#">Number 3 Seo Link</a></li>
<li><a href="#">Seo</a></li>
</ul>
</div>
</div>
JS:
function myFunction() {
var x = document.getElementById('full-text');
if (x.style.display === 'block') {
x.style.display = 'none';
} else {
x.style.display = 'block';
}
}
CSS:
#show-more-footer{
cursor:pointer;
}
#full-text{
display:none;
}
Share
Improve this question
edited Jan 27, 2017 at 12:09
AwkwardCoder
25.7k29 gold badges85 silver badges159 bronze badges
asked Jan 27, 2017 at 10:53
ml92ml92
4514 gold badges9 silver badges20 bronze badges
4
- Why don't you use jQuery instead of reinventing the wheel? – B001ᛦ Commented Jan 27, 2017 at 10:56
- project and members not allowed me that – ml92 Commented Jan 27, 2017 at 10:57
- A possible duplicate of stackoverflow./questions/6787383/… – Eduard Malakhov Commented Jan 27, 2017 at 10:57
- 1 If you want a code that runs on more then one browser, i would strongly advise you to talk to your project members again. I have done big javascript projects before jquery and similar frameworks existed, would never do that again... – Beowolve Commented Jan 27, 2017 at 11:01
2 Answers
Reset to default 8You can directly change style of an element in JavaScript:
element.style.transform = "rotate(180deg)";
This will appear in the HTML as :
<div id="element-id" style="transform: rotate(180deg);"></div>
You could also use the classList API and JS :
.reverse {
transform: rotate(180deg);
}
And the JS :
element.onclick = function() {
element.classList.toggle("reverse");
}
MDN - element.classList
CanIUse - classList
The fact that some browsers don't support the .toggle()
method is not a problem, use a custom function which uses .add()
or .remove()
.
Last advices (optional) :
I would use CSS transitions with this kind of features (like transition: all 0.3s ease-in-out;
) and change your hide/show method by setting a height:0
and overflow:hidden
to the content you hide, and onclick
of the chevron you give him element.style.height: auto
.
my first advice would be to not use inline javascript to call your function, you should use a listener instead
var button = document.getElementById('show-more-footer');
button.addEventListener('click', myFunction);
then you can use the callback first argument to get your event
function myFunction(event) {
var button = event.currentTarget;
var x = document.getElementById('full-text');
if (x.style.display === 'block') {
x.style.display = 'none';
button.querySelector('i').style.transform = 'rotate(0)'
} else {
x.style.display = 'block';
button.querySelector('i').style.transform = 'rotate(180deg)'
}
}
本文标签: htmlPure Javascript add style on clickStack Overflow
版权声明:本文标题:html - Pure Javascript add style on click - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741219710a2360730.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论