jQuery is fun!
Hello World!
Hello Sweden!
Basic syntax: $(selector).action()
$(.class).action() &(#id).action() CSSと同じ
$(this).action() JavaScriptの this とほぼ同じ(?)
jquery →
$(document).ready(function() {
var myElement = $("#id01");
$("#demo1").text("The text from the id01 paragraph is: " + myElement[0].innerHTML);
});
JavaScript →
{
let myElement =
document.getElementById("id01");
document.getElementById("demo2").innerHTML =
"The text from the id01 paragraph is: " + myElement.innerHTML;
}
style="disply: inline-block;" で横並びに
$(document).ready(function(){ $("button#hide1").click(function(){ $("pre").hide("slow"); }); }); $(document).ready(function(){ $("button.show1").click(function(){$("pre").show("slow") }); }); $(document).ready(function(){ $("#JP1").click(function(){ $("pre.source").toggle("slow"); }); });
class指定は("element.class name") id指定は("element#id name")
//focus
$(document).ready(function(){
$("input#focusP").focus(function(){
$("span#FP1").css("display", "inline").fadeOut(4200);
});
});
jQuery focus()
Move the mouseover this <p> paragraph.
//on()
$(document).ready(function(){
$("p#onP1").on("mouseover mouseout", function(){
$(this).toggleClass("intro_onP");
});
});
jQuery on()
$(selector).on(event,childSelector,data,function,map)on()
event, function are required.
map ({event:function, event:function,...});
jQuery multipe .css()method
.css({"property_name":"value", "property_name": "value",...})
jQuery on() method
//on() map attach multiple events
$(document).ready(function(){
$("div#onP2 > p").on({
mouseover: function(){
$(this).css("background-color", "lightgrey");
},
mouseleave: function(){
$(this).css("background-color", "lightblue");
},
click: function(){
$(this).css("background-color", "lightgreen");
}
});
});
$(document).ready(function(){
$("div#onP2").on("click", "button" ,function(event){
$(event.delegateTarget).css({"background-color": "khaki", "font-size", "2.2vw"});
});
});
jQuery selectors and, jQuery parent > child selector and,.delegateTarget
some headline
hiding practice
.hide()
some headline
toggle practice
.toggle()
//hide() toggle() and, show()
$(document).ready(function(){
$(".exP .hideP").click(function(){
$(this).parents(".exP").hide("slow");
});
});
$(document).ready(function(){
$(".exP1 .hideP1").click(function(){
$(".exP").show("slow");
});
});
$(document).ready(function(){
$(".exP1 .hidep1").click(function(){
$("div.exP1 > p").toggle("slow");
});
});
//animation progress bar
$(document).ready(function(){
$("#progressB").click(function(){
$("#Pbox").animate({
width: "400px"
}, {
duration: 5000,
easing: "linear",
step: function(x) {
$("#progressB1").text(Math.round(x * 100 / 400) + "%");
}
});
});
});
jQuery Effect Methods
display:none; / visibility: hidden;
visibility and toggle
button 3つflexboxに入れたら "hidden"にだけtransition付けたが、他もつられる。
css transition
//fadeIn() fadeOut() fadeToggle()
$(document).ready(function(){
$("#fadeinP").click(function(){
$("#dif1").fadeIn();
$("#dif2").fadeIn("slow");
$("#dif3").fadeIn(3000);
});
});
$(document).ready(function(){
$("#fadeoutP").click(function(){
$("#dif1").fadeOut();
$("#dif2").fadeOut("slow");
$("#dif3").fadeOut(3000);
});
});
$(document).ready(function(){
$("#toggleP").click(function(){
$("#dif1").fadeToggle();
$("#dif2").fadeToggle("slow");
$("#dif3").fadeToggle(3000);
});
});
$(document).ready(function(){
$("#fadetoP").click(function(){
$("#dif1").fadeTo("slow", 0.2);
$("#dif2").fadeTo(2200, 0.5);
$("#dif3").fadeTo(1500, 0.7);
})
})
$("#dif1,#dif2,#dif3").fadeTo("slow", 1.00);
multiple id or class divide with conmma: $("#id, #id, #id,...")
hidden box practice
//slideDown()
$(document).ready(function(){
$("#flip").click(function(){
$("#panel").slideDown("slow");
});
});
//slideUp()
$(document).ready(function(){
$("#SU").click(function(){
$("#panel").slideUp("slow");
});
});
$(document).ready(function(){
$("#flip1").click(function(){
$("#panel1").slideToggle("slow");
});
});
animate({css parameter}, speed,callback);
animate(), the property name must be camel-cased style. paddingLeft is OK padding-left is not acceptable.
/* image hover zoom*/
/*img {transition-property: width;
transition-duration: 1s;
transition-timing-function: ease;
transition-delay: 0.2s;}*/
img {transition: width 1s ease 0.2s; }
img:hover { width: 50%;
}
======
/* responsive 用に大きく :hoverの無効
@media screen and (max-width: 768px){
img { width: 80%; }
img:hover { width:80%!important; }
}
CSS transition
all HTML elements have a static position, they cannot be moved. To manipulate the position, the CSS position property of the element to relative, fixed, or absolute.
animate()transfrom: rotate(20deg)/skewX(20deg) などは無理。書いてもskipされるCSS trasnform
opacity: '+=0.2', としてもclick毎に透明にはならない
opacity: '0.5', などと決め打ちに
//animation()
$(document).ready(function(){
$("#aniP").click(function(){
var div = $("#aniP1");
div.animate({left: '150px'}, "slow");
div.animate({transform: '+=skewX(180deg)'}, "slow");
div.animate({fontSize: '3em'}, "2000");
});
});
//relative +=
$(document).ready(function(){
$("#aniP4,aniP7").click(function(){
$("#aniP2").animate({
left: '120px',
opacity: '0.5',
height: '+=120px',
width: '+=120px'
});
});
});
//animate() height: 'toggle'
$(document).ready(function(){
$("#aniP5,aniP8").click(function(){
$("#aniP6").animate({
height: 'toggle'
});
});
});
@media screen and (max-width:768px){} responsive
display: none; → display: block!important;
拡大したときに普段はdisplay:none; のbuttonを@media screen以下の CSS で使っていた末尾の ; を!important;に置き換えることで意図したようになった。
jQueryにも$("#aniP4,#aniP7") と書き加える。
<button id="aniP4">→</button>
<button id="aniP7" style="display: none;">↓</button>
<br>
<button id="aniP5">→</button>
<button id="aniP8" style="display: none;">↓toggle()</button>
<style>
@media screen and (max-width: 768px){
#aniP4 { display: none; }
#aniP5 { display: none; }
#aniP7 { display: block!important;}
#aniP8 { display: block!important;}
}
</style>
jQuery is fun!!
<input> でselect が出てくるとtag <select> <option> ...を想像してしまう。
mouse でのselect もある。.select .afterも
event → effect/html/css
.tirgger() .tirggerHnadler() の違い
.trigger() はeventもoccurしてくれるが、.triggerHandler()はeventが発生しない。この場合はmouseのselect event。
jQuery chain method のalphaetically順を変えてみるこれだとalphabet順を乱しても動いたが、
↑.trigger().before()では動かず、 .before().trigger()で動く。
$("selector").trigger("event", "eventObj", param1, param2,...)
$("selector").on("event", function(){} ) ここでのfunctionは function name として前後に対象があればいい。
click this paragraph to alert additional parameters.
↑ onclick function
jQueryではない。が、jQuery の.on() event に持っていくとerror でjQuery 全部停止してしまった。
getElementsByClassName の復習
need index number! for all loop through them ↑
hidden panel の作り方
対象を style="display: none;" で隠しておく。 <button>などに.click() event と fadeToggle("slow"/miliseconds) effectを付けてあげる。↓
UUUUU
append test
- coffee
- milk
- tea
event.namespace property
Click this or ↑ or ↓ to make them disappear.
This paragraph can be desappered.
- how to remove an event handler after the event has been triggered a certain number times.
This paragraph could be bigger by click for 5 times.
$(document).ready(function(){
var x = 0;
$("#offSwitch1").click(function(event){
$("#offSwitch1") .animate({fontSize: "+=5px"},"slow");
$("#offSwitch1") .animate({letterSpacing:"+=4px"},"slow")
.css("color", "lightgreen");
x++;
if (x >= 3) {
$(this).off(event);
}
});
});
//reset button用
$(document).ready(function(){
$("#reset1").click(function(){
$("#offSwitch1")
.animate({fontSize: "1em"})
.animate({letterSpacing: "0px"})
.css("color", "black");
/*$("#offSwitch1").animate({letterSpacing: "0px"});
/*$("#offSwitch1").animate({wordSpacing: "0px"});*/
});
});
animate() もchaining で繋げられる。
css letter-spacing: normal は通るが、jQuery .animate({letterSpacing: "normal"}); はダメ。やはり数字でないと。
.animate({letterSpacing: "hide"}) だと<p>自体が消えてしまう。
1回だけの .after()、もう一つ .after() と.remove() で復活.empty()にはfilter機能がない。
testing paragraph
test paragraph with class name "test".
test paragraph with class name "test".
//remove() filter
$(document).ready(function(){
$("#btn6").click(function(){
$("p").remove(".test");
});
});
$(document).ready(function(){
var x =0;
$("#revive").click(function(event){
$("p.test1")
.after('<p style="color: red;">This is revived text by after().</p>')
x++;
if (x >= 1) {
$("#revive").off(event);
}
});
});
.classList.toggle(""); testing: change the style.
<style type="text/css">
.para1 {
width:250px;
height:50px;
background-color: lightblue;
color: white;
font-size: 20px;
display: block;
border: 2px solid coral;
padding:10px;
}
.paraNew {
width:440px;
height: 130px;
background-color: lavender;
text-align: right;
text-shadow: 2px 2px 5px black;
color: navy;
text-indent: 3em;
animation: animation-test 4s 3;
animation-fill-mode: forwards;
}
@keyframes animation-test {
0% {
left: 20px;
background-image: linear-gradient(to right, rgba(30,144, 255, 0.2),rgba(30, 144, 255, 1))
}
/*30% {
left: 20px;
background-image: linear-gradient(to right,rgba(19, 128, 236, 0.5),rgba(19, 128, 236, 0.7))
}
60% {
left:20px;
background-image: linear-gradient(to right,rgba(19, 128, 236, 0.5),rgba(19, 128, 236, 0.7))
}
*/
100% {
left: 200px;
background-image: linear-gradient(to right, rgba(30,144, 255, 0),rgba(30, 144, 255, 1));
font-size: 2em;
text-align: bottom;
}
}
Dropdown menu
<style type="text/css">
.dropdown {
position: relative;
display: inline-block;
}
.dropB1 {
background-color: #4CAF50;
color:white;
padding: 12px;
font-size: 12px;
border: none;
cursor: pointer;
}
.dropB1:hover, .dropB1:focus {
background-color: #3e8e41;
}
.DRcontent {
display: none;
position: absolute;
background-color: #f9f9f9;
min-width: 200px;
overflow: auto;
box-shadow: 2px 8px 10px 0px rgba(0, 0, 0, 0.3) ;
}
.DRcontent a {
color: black;
padding: 10px 15px;
text-decoration: none;
display: block;
}
.Drcontent a:hover {
background-color: lightgrey;
}
.show2 {display: block;}
</style>
<div class="dropdown">
<button id="DRbtn1" class="dropB1">menu</button>
<div id="dropdownSelf" class="DRcontent">
<a href="#home">Home</a>
<a href="#about">About</a>
<a href="#contact">Contact</a>
</div>
</div>
<script type="text/javascript">
document.getElementById("DRbtn1").onclick = function() {dropdownmenu()};
function dropdownmenu() {
document.getElementById("dropdownSelf").classList.toggle("show2");
}
</script>
sticky navibarの下準備 window object>pageX/YOffset→element object>offsetTop→element object>classList
//style
#navibar {
overflow: hidden;
background-color: #333;
}
#navibar a {
float:left;
display: block;
color: #f2f2f2;
text-align: center;
padding: 12px 14px;
text-decoration: none;
font-size: 11px;
}
#navibar a:hover {
background-color: #ddd;
color:lightgrey;
}
#navibar a.active {
background-color: #4CAF50;
color: lightgrey;
}
.sticky1 {
position: fixed;
top: 0;
width:30%;
}
//script 部分
{
let navbar = document.getElementById("navibar");
let sticky = navibar.offsetTop;
function stickyNavi() {
if (window.pageYOffset >= sticky) {
navibar.classList.add("sticky1")
} else {
navibar.classList.remove("sticky1");
}
}
}
sticky navigation bar の縦横切替
.className.toggle("") で可能。<body>に付いた onscroll="stickyNavi()" でscroll中は常に .sticky1 が .add("sticky1") される。 getElementById("navibar") でelement取得、常に付いているclassName="sticky1" を .className.toggle("sticky2"); に変更できるように function() を追加するだけ。
font-size を変更するようにしたが、css javascript でうまく行ったのは@media screen and (max-width 768px){} に書いたときだけだった。
<style>
.sticky1 {
position: fixed;
top: 0;
right: 0;
width:30%;
}
.sticky2 {
display: flex; //float からflex に変更
flex-direction: column; //column で縦表示 rowなら横に。
position: fixed;
top: 0;
right: 0;
width:12%; //width 変更
}
To make navigation bar dissapear
DOM childrenを使ってみる。
function Dissapear() {
var x = document.getElementById("navibar").children;
var y = document.getElementById("navibar");
//x.classList.add("sticky3");
var i;
for (i = 0; i < x.length; i++) {
x[i].style.visibility = "hidden";
}
y.style.visibility = "hidden";
}
to get .lastChild element of text use .text → document.getElementById("SSticky").lastChild.text;
This is NOT end of the page
body.lastchild.text で</script> が</body>の前に有るとundefined <p>を無理やり入れると意図したtext return。
.innerWdth() include padding : .innerHeight() include padding:
("#test3 > div > p") に対する :last :last-child :last-of-type
The first paragraph in #test3 div
The first <p> childNodes[1]
The last <p>
This is a span element childNodes[1]
The first <p> childNodes[2]
The last <p> childNodes[3]
This is the last <span> in the ("#test3 > div") childNodes[4]The first <p> childNodes[1]
The last <p> childNodes[2]
The last <p> in ("#test3")
$(document).ready(function(){
$("#test3 > button").click(function(){
var btn = $(this).text();
$("#test3 > div> p")
.css("background-color", "white");
$("#test3 > div > p" + btn)
.css("background-color", "yellow");
});
});
("#test3 > div > p") に対する :last , :last-child , :last-of-type の違い。
//selector の指定は丁寧に指定しないと動いてくれない。
/*section > button {
text-transform: none;
}*/
.containergrid > #test3 > button {
text-transform: none;
}
button#btn12 {
text-transform: none;
}
Smooth scroll to top
- try it of smooth scroll
- Event object↓
- .preventDefault()
- jQuery .scroll()
- jQuery HTML/CSS methods↓
- .scrollTop()
- .offset()
- location object↓
- location hash property Sets or return the anchor part(#) of URL
- window object↓
- windkow .top property
location object access window.location property
.hash .host .href .serch ...
jQuery .scroll() div height:500px にすると<div> 内でscroll event が発生しない。 なにかのelement にscroll() event attach したかったらheight 指定と overflow-Y= scroll に
//smoothscroll
$(document).ready(function(){
$("#Sa").on('click', function(event){
if (this.hash !== "") { // #hash 自体にdefault 動作以外の valueが有るようにする・見せかける
event.preventDefault(); //#Sa をclick event 時の動作を防ぐ・overrideする(本来ならば、id="Sa" がある場所まで飛んでいく)
var hash = this.hash; //click event 時の動作をvariable として格納(animate()で動けるように$(hash).offset().top で動ける)
$('html, body').animate({scrollTop: $(hash).offset().top}, 900, function(){
window.location.hash = hash; //(#) がURL に加えられる。
});
} //end if
});
});
↑ 失敗
↑
function makeHappen() {
var x = document.getElementById("MH").children;
var y = document.getElementById("MH");
var i;
for (i = 0; i < x.length; i++ ) {
x[i].style.visibility = "visible";
}
y.style.visibility = "visible";
/*var navibar = document.getElementById("navibar");
var sticky = navibar.offsetTop;
/*if (window.pageYOffset >= sticky) {
if (x.style.visibility == "hidden") {
x.style.visibility = "visible"; } else {
x.style.visibility = "visible";
}
}
- lolipop
- marshmallow
- nougat
- oreo
- pie
this is paragraph
this is another paragraph with class name of TP
.toggleClass("class name", true/false);
true/false で add/remove を操作できる。↓
↑last <div> will .css({"transform":"rotato(15deg)",
"opacity": "0.5"});
↑ .css({"transform":"rotate(0deg)",
"opacity":"1"}); -15degではない。
.toggleClass("show3"); ではもとに戻らず。
test
test2
対象が同じで別のfunction() 2つを割り当ててしまうと、最後に実行した方だけ有効になる(??)。
test2→.last()→Reset↑ →test2 の順だと2回目のtest2が効かない。
<style>
.listitem_1, .listitem_3 {
color: coral;
}
.listitem_0, .listitem_2, .listitem_4 {
color:blue;
}
</style>
<script>
$(document).ready(function(){
$("#toggleP1").click(function(){
$("#UL > li").toggleClass(function(n) {
return "listitem_" + n;
});
});
});
//
$(document).ready(function(){
$("#toggleP2").click(function(){
$(".containergrid > div > p").toggleClass("TP");
});
});
//add and remove .toggleClass("class name", true/false);
$(document).ready(function(){
$("#add1").click(function(){
$(".containergrid > div > p").toggleClass("TP1",true);
});
$("#remove1").click(function(){
$(".containergrid > div > p").toggleClass("TP1", false);
});
});
//
$(document).ready(function(){
$("#btn7").click(function(){
$("div").last()
.css({"transform":"rotate(15deg)",
"opacity":"0.5"});
});
$("#btn8").click(function(){
$("div").last()
.css({"transform":"rotate(0deg)",
"opacity":"1"});
/*.toggleClass("show3")*/
});
});
</script>
<style>
.show3 {
transform:rotate(0deg);
opacity: 1;
} </style>
This is end of the page.
コメント
コメントを投稿