CSS ප්‍රදර්ශන දේපලෙහි සංක්‍රාන්තිය


1476

මම දැනට CSS 'මෙගා ඩ්‍රොප් ඩවුන්' මෙනුවක් නිර්මාණය කරමි - මූලික වශයෙන් සාමාන්‍ය CSS පමණක් පතන මෙනුවකි, නමුත් විවිධ වර්ගයේ අන්තර්ගතයන් අඩංගු එකකි.

ඒ මොහොතේ දී, එය 3 සංක්රමණයන් ඇති 'ප්රදර්ශනය' දේපල අදාළ නැති බව CSS පෙනී එනම්, ඔබ දක්වා ඇති වූ සංක්රාන්තියක්, කුමන හෝ ආකාරයක කරන්න බැහැ, display: noneකිරීමට display: block(හෝ ඕනෑම සංකලනයක්).

ඉහළ මට්ටමේ මෙනු අයිතමයන්ගෙන් යමෙකු සැරිසැරූ විට ඉහත උදාහරණයේ සිට දෙවන පෙළ මෙනුවට 'මැකී යාමට' ක්‍රමයක් තිබේද?

ඔබට visibility:දේපලෙහි සංක්‍රාන්ති භාවිතා කළ හැකි බව මම දනිමි , නමුත් එය use ලදායී ලෙස භාවිතා කළ හැකි ක්‍රමයක් ගැන මට සිතිය නොහැක.

මම උස භාවිතා කිරීමට ද උත්සාහ කළෙමි, නමුත් එය අවාසනාවන්ත ලෙස අසාර්ථක විය.

ජාවාස්ක්‍රිප්ට් භාවිතයෙන් මෙය සාක්ෂාත් කර ගැනීම ඉතා සුළු දෙයක් බව මම දනිමි, නමුත් මට අවශ්‍ය වූයේ CSS පමණක් භාවිතා කරන ලෙස මට අභියෝග කිරීමටය, මම සිතන්නේ මම තව ටික වේලාවකින් ඉදිරියට එන බවය.


ඔබ එය ප්‍රදර්ශනය කරනවාට වඩා පාරාන්ධතා දේපලවලට යොදනවා නම් CSS සංක්‍රාන්තිය ක්‍රියාත්මක වේද?
පෝල් ඩී. වේට්

13
පිහිටීම: නිරපේක්ෂ; දෘශ්‍යතාව: සැඟවුණු; දර්ශනය හා සමානයි: කිසිවක් නැත;
ජාවඩ්

8
Aw ජවාඩ්: ඔබත් එවැනි දෙයක් එකතු කළොත් පමණයි z-index:0.
ඩෑන්මන්

7
Aw ජාවාඩ්: තිර රීඩර් කියවීමට visibility: hiddenඔබට අවශ්‍ය නම් මිස කිසි විටෙකත් භාවිතා නොකිරීමට නිර්දේශ කෙරේ (සාමාන්‍ය බ්‍රව්සර් එසේ නොවේ). එය අර්ථ දක්වන්නේ මූලද්‍රව්‍යයේ දෘශ්‍යතාව පමණි (පැවසීම වැනි opacity: 0), එය තවමත් තෝරා ගත හැකි, ක්ලික් කළ හැකි, සහ එය පෙර පැවති ඕනෑම දෙයක්; එය නොපෙනේ.
වන සංරක්ෂණ

1
pointer-eventsIE 8,9,10 සඳහා සහය නොදක්වයි , එබැවින් එය සැමවිටම අවුලක් නැත
ස්ටීවන් ප්‍රිබිලින්ස්කි

Answers:


1373

ඔබට සංක්‍රාන්ති දෙකක් හෝ ඊට වැඩි ගණනක් සංයුක්ත කළ හැකිය, visibilityමේ වතාවේ එය ප්‍රයෝජනවත් වේ.

div {
  border: 1px solid #eee;
}
div > ul {
  visibility: hidden;
  opacity: 0;
  transition: visibility 0s, opacity 0.5s linear;
}
div:hover > ul {
  visibility: visible;
  opacity: 1;
}
<div>
  <ul>
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
  </ul>
</div>

( transitionදේපල සඳහා වෙළෙන්දා උපසර්ග අමතක නොකරන්න .)

වැඩි විස්තර මෙම ලිපියේ ඇත.


10
මෙම පිළිතුර අනෙක් ඒවාට වඩා අඩු කාර්යයක් සේ පෙනෙන අතර ප්‍රදර්ශනයෙන් අප අපේක්ෂා කරන දේ සාක්ෂාත් කරගනී: කිසිවක් / වාරණය; ස්තූතියි. මට ටොන් ගණනක් ඉතිරි කළා.
බ්‍රෙන්ඩන්

21
ඔව්, මෙහි ඇති ගැටළුව එය පිටුපස ඇති ඕනෑම දෙයක් නොපෙනුණත් අතිච්ඡාදනය වනු ඇත. මම උස: 0 වඩා හොඳ විසඳුමක් භාවිතා කළෙමි
ජොෂ් බෙඩෝ

758
මෙය කදිම නමුත් ගැටළුව වන්නේ “දෘශ්‍යතාව සැඟවුණු” මූලද්‍රව්‍යයන් තවමත් අවකාශය අත්පත් කර ගෙන ඇති අතර “කිසිවක් පෙන්වන්නේ නැත”.
රූයි මාර්ක්ස්

42
මට බොහෝ විට යමක් මග හැරී ඇත, නමුත් ඔබ දෘශ්‍යතාව සහ පාරාන්ධතාව යන දෙකම වෙනස් කරන්නේ ඇයි? මූලද්‍රව්‍යය සැඟවීමට 0 පාරාන්ධතාවය සැකසෙන්නේ නැත - දෘශ්‍යතාව සැඟවීමටද ඔබ සැකසිය යුත්තේ ඇයි?
ජීඑම්ඒ

21
E ජෝර්ජ්මිලෝ ඔබ පාරාන්ධතාව පමණක් සකසන්නේ නම්, මූලද්‍රව්‍යය ඇත්ත වශයෙන්ම තවමත් පිටු විදැහුම්කරණයේ පවතී (ඔබට උදාහරණයක් ලෙස සිතීම ක්ලික් කළ නොහැක).
adriendenat

807

මෙය ක්‍රියාත්මක කිරීම සඳහා ඔබ වෙනත් ආකාරයකින් මූලද්‍රව්‍යය සැඟවිය යුතුය.

දෙකම <div>නියත වශයෙන්ම ස්ථානගත කර සැඟවුණු දෙය සැකසීමෙන් මම බලපෑම ඉටු කර ගතිමි opacity: 0.

ඔබ පවා වමා නම් displayදේපල noneසඳහා block, අනෙකුත් මූලද්රව්ය මත ඔබේ සංක්රමණය සිදු නොවනු ඇත.

මෙය වටා වැඩ කිරීමට, සෑම විටම මූලද්‍රව්‍යය වීමට ඉඩ දෙන්න display: block, නමුත් මෙම ඕනෑම ක්‍රමයක් සකස් කිරීමෙන් මූලද්‍රව්‍යය සඟවන්න:

  1. සකසන්න heightකිරීමට 0.
  2. සකසන්න opacityකිරීමට 0.
  3. ඇති මූලද්‍රව්‍යයේ රාමුවෙන් පිටත මූලද්‍රව්‍යය ස්ථානගත කරන්න overflow: hidden.

තවත් බොහෝ විසඳුම් ඇත, නමුත් ඔබ මූලද්‍රව්‍යය ටොගල් කළහොත් ඔබට සංක්‍රාන්තියක් සිදු කළ නොහැක display: none. උදාහරණයක් ලෙස, ඔබට මේ වගේ දෙයක් උත්සාහ කිරීමට උත්සාහ කළ හැකිය:

div {
    display: none;
    transition: opacity 1s ease-out;
    opacity: 0;
}
div.active {
    opacity: 1;
    display: block;
}

නමුත් එම වනු ඇත නොවන වැඩ. මගේ අත්දැකීම් වලින්, මම මෙය කිසිවක් නොකරන බව සොයාගෙන ඇත.

මේ නිසා, ඔබට සැමවිටම මූලද්‍රව්‍යය තබා ගැනීමට අවශ්‍ය වනු ඇත display: block- නමුත් ඔබට මෙවැනි දෙයක් කිරීමෙන් එය වටා යා හැකිය:

div {
    transition: opacity 1s ease-out;
    opacity: 0;
    height: 0;
    overflow: hidden;
}
div.active {
    opacity: 1;
    height: auto;
}

29
සවිස්තරාත්මක පිළිතුරකට ජිම්ට ස්තූතියි. දර්ශනය: දේපල කිසිසේත් වෙනස් වුවහොත්, ඔබගේ සියලු සංක්‍රාන්ති ක්‍රියා නොකරනු ඇත යන කාරණය ගැන ඔබ හරියටම නිවැරදිය. එය ලැජ්ජාවකි - ඒ පිටුපස ඇති හේතුව කුමක්දැයි මම කල්පනා කරමි. පැත්තේ සටහනක, මුල් ප්‍රශ්නයේ මා පළ කළ එම සබැඳියේම, මම එය සමඟ සිටින්නේ කොහේදැයි ඔබට දැක ගත හැකිය. මට ඇති එකම (කුඩා) ගැටලුව වන්නේ ක්‍රෝම් [5.0.375.125] පිටුව පූරණය වන විට, පිටුවේ මූලද්‍රව්‍ය පටවන විට මෙනුව ඉක්මනින් මැකී යන ආකාරය ඔබට දැකගත හැකිය. ෆයර්ෆොක්ස් 4.0 බී 2 සහ සෆාරි 5.0 ඇත්තෙන්ම හොඳයි ... දෝෂයක් හෝ මට මග හැරුණු යමක් තිබේද?
රිචඩ් ටේප්

7
මෙය නිවැරදි බව මම එකඟ වන අතර මෙය දායක වනු ඇත; අනාගත සංචාරකයින් සඳහා ප්‍රමුඛස්ථානයක්. මම ක්‍රෝම් හි ක්‍රියාකාරී විසඳුමක් සොයා ගත්තෙමි, නමුත් එය අයිෆෝන් 4 හි අසමත් වන බව මට පෙනී ගියේය: visibility:hidden; opacity:0; -webkit-transition: all .2s ease-in-out;මෙය නිවැරදිව සංක්‍රමණය නොවනවා පමණක් නොව, ඉලක්කගත අංගය කිසි විටෙකත් නොපෙන්වයි. QA ඔබ, මම සහ ඔබේ මව අසමත් වනු ඇත.
SimplGy

1
ඔබට ඇත්ත වශයෙන්ම දෘශ්‍යතා දේපලද සංක්‍රමණය කළ හැකිය .. කියමින්
Cu7l4ss

3
ඔබ ඔබේ සැඟවුණු තත්වය සකසා height: 0;එය සංක්‍රමණය නොකරන්නේ නම්, සංක්‍රාන්තිය ක්‍රියා නොකරනු ඇත. මම මෙය උත්සාහ කළේ පාරාන්ධතාව සංක්‍රමණය කිරීමට ය. මට ඉවත් කිරීමට සිදු වියheight: 0;
චොවි

11
ඔබට overflow: hiddenස්තූතියි නිසා ඔබ ඡන්දයක් ලබා ගත්තා!
තියාගෝ

286

මෙම පෝස්ට් කරන අවස්ථාවේ දී, ඔබ displayදේපල වෙනස් කිරීමට උත්සාහ කරන්නේ නම් සියලුම ප්‍රධාන බ්‍රව්සර් CSS සංක්‍රාන්ති අක්‍රීය කරයි , නමුත් CSS සජීවිකරණ තවමත් හොඳින් ක්‍රියාත්මක වන බැවින් අපට ඒවා ක්‍රියාකාරී ක්‍රමයක් ලෙස භාවිතා කළ හැකිය.

නිදර්ශන කේතය (ඔබට එය ඔබගේ මෙනුවට ඒ අනුව යෙදිය හැකිය) නිරූපණය :

ඔබගේ මෝස්තර පත්‍රයට පහත CSS එක් කරන්න:

@-webkit-keyframes fadeIn {
    from { opacity: 0; }
      to { opacity: 1; }
}
@keyframes fadeIn {
    from { opacity: 0; }
      to { opacity: 1; }
}

ඉන්පසු fadeInමව් හෝවර් මත දරුවාට සජීවිකරණය යොදන්න (සහ ඇත්ත වශයෙන්ම සකසා ඇත display: block):

.parent:hover .child {
    display: block;
    -webkit-animation: fadeIn 1s;
    animation: fadeIn 1s;
}

යාවත්කාලීන කිරීම 2019 - අභාවයට යෑමට සහාය වන ක්‍රමය:

(සමහර ජාවාස්ක්‍රිප්ට් කේත අවශ්‍යයි)

// We need to keep track of faded in elements so we can apply fade out later in CSS
document.addEventListener('animationstart', function (e) {
  if (e.animationName === 'fade-in') {
      e.target.classList.add('did-fade-in');
  }
});

document.addEventListener('animationend', function (e) {
  if (e.animationName === 'fade-out') {
      e.target.classList.remove('did-fade-in');
   }
});
div {
    border: 5px solid;
    padding: 10px;
}

div:hover {
    border-color: red;
}

.parent .child {
  display: none;
}

.parent:hover .child {
  display: block;
  animation: fade-in 1s;
}

.parent:not(:hover) .child.did-fade-in {
  display: block;
  animation: fade-out 1s;
}

@keyframes fade-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes fade-out {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}
<div class="parent">
    Parent
    <div class="child">
        Child
    </div>
</div>


3
මේ සඳහා ස්තූතියි. මෙම height: 0(සංක්රමණයන් සඳහා) උපක්රමය ඉහත සඳහන් උස සුවදායී නින්දක්-ඉවත් මාරුවීම 0 සකසා ලක්වෙයි නිසා වැඩ කිරීමට බවක් පෙනෙන්නට නැත, නමුත් මෙම උපක්රමය දැන් හොදින් වැඩ කිරීමට පෙනේ.
එලියට් වින්ක්ලර්

43
ස්තූතියි, ඉතා ප්‍රයෝජනවත්. නමුත් එය මැකී යන්නේ කෙසේද?
ඉලියෝ

7
හොඳම පිළිතුර, සංක්‍රාන්ති සමඟ කළ නොහැකි නමුත් ඔව් සජීවිකරණ සමඟ.
මයිකල්

6
ප්‍රතිලෝම සජීවිකරණය ගැන කුමක් කිව හැකිද, මූලද්‍රව්‍යය සෙමෙන් අතුරුදහන් විය යුත්තේ එවිටද?
හරිත

2
Al සල්මන් අබ්බාස් එය ෆේඩ්ඉන් සඳහා වැඩ කරන නමුත් මට එය ෆේඩ් ඕට් සඳහා වැඩ කිරීමට නොහැකි වේ. මම දැන් කරන්නේ ඔබ ෆේඩ්ඉන්keyframe
ප්‍රෝටෝ එවැන්ජලියන්

80

වෙනස් වුවහොත් සංක්‍රාන්ති අක්‍රීය වීමට හේතුවdisplay ඇත්ත වශයෙන්ම දර්ශනය වන දේ නිසා යැයි මම සැක කරමි . එය කරන්නේ කෙසේද නොවන බැසීමක් සියුම්ව සජීවිකරණ කළ හැකි ඕනෑම දෙයක් වෙනස් කරන්න.

display: none;හා visibility: hidden;දෙකක් සම්පූර්ණයෙන්ම වෙනස් දේවල්.
දෙකම මූලද්‍රව්‍යය නොපෙනෙන බවට පත්කිරීමේ බලපෑමක් ඇත, නමුත් visibility: hidden;එය තවමත් පිරිසැලසුමෙහි විදහා දක්වනු ඇත, නමුත් දෘශ්‍යමය වශයෙන් එසේ නොවේ .
සැඟවුණු මූලද්‍රව්‍යය තවමත් අවකාශය ලබා ගන්නා අතර එය තවමත් පේළිගත කර ඇති අතර එය බ්ලොක් හෝ බ්ලොක්-ඉන්ලයින් හෝ මේසයක් ලෙස හෝ displayමූලද්‍රව්‍යය එය විදහා දැක්වීමට පවසන ඕනෑම දෙයක් ලෙස දක්වා ඇති අතර ඒ අනුව අවකාශය ලබා ගනී.
වෙනත් මූලද්‍රව්‍ය ස්වයංක්‍රීයව එම අවකාශය අත්පත් කර නොගනී . සැඟවුණු මූලද්‍රව්‍යය එහි සත්‍ය පික්සෙල් ප්‍රතිදානයට යොමු නොකරයි.

display: noneඅනෙක් අතට මූලද්‍රව්‍යය මුළුමනින්ම විදැහුම් කිරීමෙන් වළක්වයි . එය කිසිදු පිරිසැලසුම් ඉඩක් නොගනී . හුදෙක් අංගයක් නම් මෙම කොටස් මගින් දක්වා ගෙන ඇති අවකාශය කිහිපයක් හෝ සියල්ලම අත්පත් තියෙනවා බව අනෙකුත් මූලද්රව්ය වන විට එම අවකාශය අල්ලා ගැනීමට වෙනස් සියලු පවතින නැත .

displayතවත් දෘශ්‍ය ලක්ෂණයක් පමණක් නොවේ.
එය එවැනි ඒක තිබේද යන්න ලෙස අංගයක් සමස්ත විදැහුම් මාදිලිය, අනිත්යයි block, inline, inline-block, table, table-row, table-cell, list-item, එවිට කවුරුන් හෝ
එම එක් එක් ඉතා වෙනස් සැකැස්ම අතු විහිදීම් තිබේ, සහ සජීවීකරණය කිරීමට කිසිදු සාධාරණ ක්රමයක් තිබිය හෝ සියුම්ව (සිට නැතිවා සිතාගන්න උත්සහ ඔවුන් සංක්රමණය වනු blockකිරීමට inlineඋදාහරණයක් වශයෙන්, හෝ අනෙක් අතටත්!).

දර්ශන වෙනස් වුවහොත් සංක්‍රාන්ති අක්‍රීය වන්නේ මේ නිසා ය (වෙනස් වීම හෝ වේවා none- noneහුදෙක් අදෘශ්‍යමාන නොවේ, එය එහි ම මූලද්‍රව්‍ය විදැහුම්කරණ මාදිලිය වන අතර එයින් අදහස් කරන්නේ කිසිසේත් විදැහුම්කරණය නොමැති බවයි!).


9
ඉහත විසඳුම් තරම් හොඳ විය හැකි අතර, ගුණාංග පෙන්වීම සඳහා සංක්‍රාන්ති අදාළ නොවන්නේ මන්ද යන්න පිළිබඳව සංවේදී පැහැදිලි කිරීමක් ලබා ගැනීම ඉතා තෘප්තිමත් විය.
kqr

8
මම එකඟවෙන්නේ නැහැ. එය සම්පූර්ණ අර්ථයක් ලබා දිය හැකිය. දර්ශනය නම්: ප්‍රදර්ශනය කිරීමට කිසිවක් නැත: සංක්‍රාන්තිය ආරම්භයේදීම අවහිර වීම ක්ෂණිකව සිදුවිය, එය විශිෂ්ට වනු ඇත. ආපසු සංක්‍රමණය වීම සඳහා, එය ප්‍රදර්ශනයෙන් ගියේ නම්: අවහිර කිරීම ප්‍රදර්ශනය කිරීම: සංක්‍රාන්තිය අවසානයේ කිසිවක් නැත, එය පරිපූර්ණ වනු ඇත.
කර්ටිස් යාලොප්

2
ලක්ෂ්‍යයක සිට සෘජුකෝණාස්රයක් දක්වා වූ සජීවිකරණයක් කෙබඳුදැයි ඔබට සිතාගත නොහැකි නම්, ඔබට ගැටළු තිබේ. අවකාශයක් නොමැති සිට සෘජුකෝණාස්රාකාර අවකාශයක් අත්පත් කර ගැනීම දක්වා මාරුවීම ඉතා පැහැදිලිය, හරියට, ඔබ සෑම විටම මෙන් සෑම යෙදුමක්ම මෙන් මූසිකය සමඟ සෘජුකෝණාස්රයක් මූසිකය සමඟ ඇදගෙන යන සෑම අවස්ථාවකම ඔබ එය කරයි. මෙම අසාර්ථකත්වයේ ප්‍රති ma ලයක් ලෙස, උපරිම උස හා negative ණ ආන්තිකයන් සම්බන්ධ බොහෝ හක්ක තිබේ. වැඩ කරන එකම දෙය වන්නේ 'තාත්වික' උස හැඹිලිගත කිරීම සහ පසුව ජාවාස්ක්‍රිප්ට් සමඟ ශුන්‍යයේ සිට හැඹිලි අගයට සජීවිකරණය කිරීමයි. දුක.
ට්‍රයින්කෝ

2
ට්‍රයිනිකෝ: දර්ශනය: කිසිවක් මූලද්‍රව්‍යයේ ප්‍රමාණය 0 x 0 සෘජුකෝණාස්රයකට වෙනස් නොකරයි - එය එය DOM වෙතින් ඉවත් කරයි. පළල සහ උස ගුණාංග ශුන්‍යයට සජීවීකරණය කිරීමෙන් ඔබට සෘජුකෝණාස්රයේ සිට ලක්ෂ්‍යයක් දක්වා සජීවීකරණය කළ හැකි අතර අනෙක් මූලද්‍රව්‍ය එය වටා 'දර්ශනය: කිසිවක් නැත' ලෙස ගලා එනු ඇත, නමුත් එහි 'සංදර්ශක' ගුණාංගය 'අවහිර' ලෙස පවතිනු ඇත; මූලද්රව්යය තවමත් DOM හි ඇත. දර්ශනය: අවහිර කිරීම සහ දර්ශනය අතර සජීවිකරණය පිළිබඳ සංකල්පය හාස්‍යජනක නොවේ: අතරමැදි තත්වයන් නොමැත. මූලද්‍රව්‍යයක් DOM තුළ පවතී හෝ එය කොතරම් කුඩා හෝ අදෘශ්‍යමාන වුවත් එය නොපවතී.
ස්ටීව් තෝර්ප්

1
විවික්ත ගුණාංග සජීවිකරණය කිරීම හාස්‍යජනක නොවේ. වැනි විවික්ත ගුණාංග displayවෙනත් ගුණාංග මෙන් සුමටව සංක්‍රමණය කළ නොහැක, නමුත් එයින් අදහස් කරන්නේ කාලය වැදගත් නොවන බවයි. පාලනය කිරීමට හැකි වීම විට සිට සංක්රමණය disply:blockකිරීමට display:noneසිදු ඉතා වැදගත් වේ. Ur කර්ටිස්යාලොප් එය විස්තර කළාක් මෙන්. මම සිට සංක්රමණය කිරීමට අවශ්ය නම් opacity:1කිරීමට opacity:0හා පසුව වෙනස් display:blockකිරීමට display:noneමම එය කළ හැකි විය යුතුය.
ජෙන්ස්

63

CSS හි නොපවතින ඇමතුම් වෙනුවට අපට transition-delayදේපල භාවිතා කළ හැකිය .

#selector {
    overflow: hidden; // Hide the element content, while height = 0
    height: 0; opacity: 0;
    transition: height 0ms 400ms, opacity 400ms 0ms;
}
#selector.visible {
    height: auto; opacity: 1;
    transition: height 0ms 0ms, opacity 600ms 0ms;
}

ඉතින්, මෙහි කුමක් සිදුවේද?

  1. visibleපංතිය එකතු කළ විට , දෙකම heightසහ opacityප්‍රමාදයකින් තොරව සජීවිකරණය ආරම්භ කරන්න (0 ms), නමුත් heightසජීවිකරණය සම්පූර්ණ කිරීමට 0 ms (සමාන display: block) සහ opacity600 ms ගත වේ.

  2. visibleපංතිය ඉවත් කළ විට , opacityසජීවිකරණය ආරම්භ කරයි (0 එම්එස් ප්‍රමාදය, 400 එම්එස් කාලසීමාව), සහ උස එම්එස් 400 ක් බලා සිටින අතර ක්ෂණිකව (0 එම්එස්) ආරම්භක අගය යථා තත්වයට පත් කරයි ( display: noneසජීවිකරණ ඇමතුම් සඳහා සමාන වේ ).

සටහන, මෙම ප්‍රවේශය භාවිතා කරන අයට වඩා හොඳය visibility. එවැනි අවස්ථාවන්හිදී, මූලද්රව්යය තවමත් පිටුවේ අවකාශය හිමි වන අතර එය සැමවිටම සුදුසු නොවේ.

තවත් උදාහරණ සඳහා කරුණාකර මෙම ලිපිය බලන්න .


10
පුදුමයට කරුණක් නම් මෙයට වැඩි දියුණුවක් නොමැති වීමයි - මෙම දක්ෂ විසඳුම කෙසේ හෝ පරිපූර්ණව ක්‍රියාත්මක වේ.
fanfare

4
එය ක්‍රියාත්මක height:100%වන්නේ සමහර අවස්ථාවල පිරිසැලසුම විනාශ කළ හැකි ය. විශිෂ්ට විසඳුමක්, එය ගැටළුවක් නොවේ නම්. ද්විපාර්ශ්වික වැඩ කරන කිහිපයෙන් එකක්.
ෆේබියන් වොන් එලර්ට්ස්

මේක නියමයි! මගේ නඩුවේදී එය තව දුරටත් සරල කිරීමට මට හැකි වූයේ ෆේඩ්-අවුට් සජීවිකරණ කාලය ෆේඩ්-ඉන් වේලාවට සමාන වීමට මට අවශ්‍ය වූ බැවිනි. පාවිච්චි කරනවා වෙනුවට transition: height 0ms 0ms, opacity 600ms 0msමම පාවිච්චි transition-delay: 0sකළා.
ජේකබ් ලොකාර්ඩ්

53

display සංක්‍රාන්තිය ක්‍රියාත්මක වන ගුණාංගවලින් එකක් නොවේ.

CSS ගුණාංග සඳහා සංක්‍රාන්ති යෙදිය හැකි සජීවීකරණ CSS ගුණාංග බලන්න . බලන්න අන්තර්නිවේෂණය අතිරේක හා සමුච්චකරණයේ: අගයන් සම්මිශ්රණය CSS අගයන් හා ඒකක මොඩියුලය පෙළ 4 ඔවුන් interpolated ආකාරය සඳහා.

CSS 3 දක්වා 9.1 හි ලැයිස්තුගත කර ඇත . CSS වෙතින් ගුණාංග (අනතුරු ඇඟවීමේ උත්පතන වසා දමන්න)

මම උස භාවිතා කිරීමට ද උත්සාහ කළෙමි, නමුත් එය අවාසනාවන්ත ලෙස අසාර්ථක විය.

අවසන් වරට මට මෙය කිරීමට සිදු වූ විට, මම max-heightඒ වෙනුවට භාවිතා කළෙමි , එය සජීවීකරණය කළ හැකි දේපලකි (එය සුළු වශයෙන් හැක් වුවද, එය ක්‍රියාත්මක විය), නමුත් එය සංකීර්ණ පිටු හෝ පහත් මට්ටමේ ජංගම දුරකථන භාවිතා කරන්නන් සඳහා ඉතා අවුල් සහගත විය හැකි බවට පරිස්සම් වන්න. උපකරණ.


සබැඳිය තවදුරටත් සජීවීකරණ ගුණාංග අංශයට යොමු නොකරයි.
ලැම්

1
Nd ඇන්ඩ rew ලෑම් ස්ථාවරයි. ස්තූතියි.
රොබෝකාට්

34

වාරණ දේපල වෙත ඔබට දැන් අභිරුචි සජීවිකරණයක් එක් කළ හැකිය.

@keyframes showNav {
  from {opacity: 0;}
  to {opacity: 1;}
}
.subnav-is-opened .main-nav__secondary-nav {
  display: block;
  animation: showNav 250ms ease-in-out both;
}

නිරූපණය

මෙම ආදර්ශන දී උප මෙනුවෙන් වෙනස් display:noneකිරීමට display:blockහා තවමත් යන්ට කළමනාකරණය කරයි.


යුතු myfirstවිය showNavමෙතන? ෆයර්ෆොක්ස් ගැන කුමක් කිව හැකිද? අවාසනාවට, ඔබ සඳහන් කරන ආදර්ශන පිටුවේ සම්බන්ධ යමක් මට සොයාගත නොහැක.
සෙබස්තියන් වොම් මීර්

ස්තූතියි e සෙබස්තියන් ජී. මම නිවැරදි කිරීම සිදු කර ඇති අතර ඉහත තවත් තොරතුරු කිහිපයක් එකතු කර ඇත්තෙමි.
මනීෂ් ප්‍රධාන්

E සෙබස්තියන් වොම් මීර්: පැරණි ෆයර්ෆොක්ස් අනුවාදයන්ට "-moz-" විකුණුම් උපසර්ගය අවශ්‍යයි, සංස්කරණය කළ කේතය බලන්න
Herr_Schwabullek

23
මට යමක් මග හැරී ඇත්නම් මිස "ආදර්ශන" සබැඳිය තවදුරටත් උප මෙනු සංක්‍රාන්තියක් නොපෙන්වයි.
යථාර්ථවාදී

1
අවකාශයක් නොමැති දෙයක් සඳහා (සංදර්ශනය: කිසිවක් නැත) අවකාශය අත්පත් කර ගන්නා දෙයකට නිවැරදි සංක්රමණය (දර්ශනය: වාරණය), මානයන් පුළුල් කිරීම මිස මැකී යාමක් නොවේ. එය දෘශ්‍යමාන ලෙස සැඟවී තිබේ නම් (එය අවකාශයේ වාසය කරන නමුත් දෘශ්‍යමාන නොවේ), එවිට ප්‍රමාණය එක හා සමාන වන අතර මැකී යාම සුදුසු වේ. මෙම පිළිතුරු කිසිවක් ගැටළුව විසඳන්නේ නැත.
ට්‍රයින්කෝ

21

අනුව W3C කෘත්යාධිකාරී කෙටුම්පත් 19 නොවැම්බර් 2013 display වන නොවේ animatable දේපල . වාසනාවකට මෙන්, visibilityසජීවීකරණය කළ හැකිය. ඔබට එහි සංක්‍රාන්තිය පාරාන්ධතාව ( JSFiddle ) සමඟ සම්බන්ධ කළ හැකිය :

  • HTML:

    <a href="http://example.com" id="foo">Foo</a>
    <button id="hide-button">Hide</button>
    <button id="show-button">Show</button>
  • CSS:

    #foo {
        transition-property: visibility, opacity;
        transition-duration: 0s, 1s;
    }
    
    #foo.hidden {
        opacity: 0;
        visibility: hidden;
        transition-property: opacity, visibility;
        transition-duration: 1s, 0s;
        transition-delay: 0s, 1s;
    }
  • පරීක්ෂා කිරීම සඳහා ජාවාස්ක්‍රිප්ට්:

    var foo = document.getElementById('foo');
    
    document.getElementById('hide-button').onclick = function () {
        foo.className = 'hidden';
    };
    
    document.getElementById('show-button').onclick = function () {
        foo.className = '';
    };

සැකසීමෙන් තොරව ඔබ සබැඳිය විනිවිද පෙනෙන බවට පත් කළහොත් visibility: hiddenඑය ක්ලික් කළ හැකි බව සලකන්න .


1
jsfiddle උදාහරණයේ කිසිදු සංක්‍රාන්තියක් මා දකින්නේ නැත
Gino

@Gino මම වෙනස් කිරීම මගින් එය ස්ථාවර 0කිරීමට 0s. පෙනෙන විදිහට, අතීතයේ දී මම සහාය දක්වන ඒකක රහිත ශුන්‍ය වේලාවන් පරීක්ෂා කිරීම සඳහා භාවිතා කළ බ්‍රව්සරය. කෙසේ වෙතත්, ඒකක රහිත වේලාවන් 2016 සැප්තැම්බර් 29 වන දින W3C අපේක්ෂක නිර්දේශයේ කොටසක් නොවේ .
feklee

මෙය තවත් ඉහළ නැංවිය යුතුය. එය හොඳම විසඳුමක් බව මට පෙනී ගියේය.
ආතර් ටාරසොව්

ප්‍රමාදය භාවිතා කිරීම මෙය ක්‍රියාත්මක වන ආකාරය තේරුම් ගැනීමට හොඳම තර්කනය පමණි. සජීවීකරණය කර සඟවන්න. සඟවන්න, සජීවිකරණය කරන්න. මට පරිපූර්ණ විසඳුම
බ un නෝ පිටෙලි ගොන්වාල්ව්ස්

15

සංස්කරණය කරන්න: මෙම උදාහරණයේ කිසිවක් පෙන්වන්නේ නැත.

@keyframes hide {
  0% {
    display: block;
    opacity: 1;
  }
  99% {
    display: block;
  }
  100% {
    display: none;
    opacity: 0;
  }
}

ඉහත සිදුවන්නේ, පාරාන්ධතාවය මැකී යන අතරතුර සජීවිකරණ සංදර්ශනයෙන් 99% ක් අවහිර කිරීමට සකසා තිබීමයි. අවසාන මොහොතේ දර්ශන දේපල කිසිවකට සකසා නොමැත.

වඩාත්ම වැදගත් දෙය නම් සජීවිකරණය අවසන් වූ පසු සජීවීකරණ-පිරවුම් මාදිලිය භාවිතා කර අවසන් රාමුව රඳවා ගැනීමයි: ඉදිරියට

.hide {
   animation: hide 1s linear;
   animation-fill-mode: forwards;
}

මෙන්න උදාහරණ දෙකක්: https://jsfiddle.net/qwnz9tqg/3/


මෙම විසඳුම සමඟ display: noneක්‍රියා නොකරන්නේද?
බාර්ට් කැලික්ස්ටෝ

'සජීවිකරණ-පිරවුම්-මාදිලිය විය යුතුය: ඉදිරියට' ඉදිරියට 'නොවේ'
ඇලෙක්ස්

සංස්කරණයන් අක්ෂර හයක් විය යුතු අතර මට යෝජනා කළ හැක්කේ සංස්කරණය කිරීම පමණි
ඇලෙක්ස්

1
Lex ඇලෙක්ස් හරි. යතුරු ලියනය ස්ථාවරයි. සිත්ගන්නා කරුණ නම් මගේ පිළිතුර අපේක්ෂා කළ පරිදි ක්‍රියාත්මක නොවීමයි, නමුත් බ්‍රව්සර් එයට සහාය දෙන තෙක් මම එය තබා ගන්නෙමි යැයි සිතීම තර්කානුකූලයි.
පවෙල්

3
කර්සර කට්ටලයක් සහිත මෙම ෆෙඩල් display: noneඑකේ ඔබට දැකිය හැකි පරිදි , කිසි විටෙකත් සත්‍ය වශයෙන්ම ක්‍රියාත්මක නොවේ. jsfiddle.net/3e6sduqh
robstarbuck

14

මගේ පිළිවෙලට ඇති ජාවාස්ක්‍රිප්ට් උපක්‍රමය නම් සමස්ත සිදුවීමම වෙනස් කාර්යයන් දෙකකට වෙන් කිරීමයි !

දේවල් සකස් කිරීම සඳහා, එක් ගෝලීය විචල්‍යයක් ප්‍රකාශයට පත් කරන අතර එක් සිදුවීම් හසුරුවන්නෙකු අර්ථ දැක්වේ:

  var tTimeout;
  element.addEventListener("transitionend", afterTransition, true);//firefox
  element.addEventListener("webkitTransitionEnd", afterTransition, true);//chrome

එවිට, මූලද්රව්ය සැඟවීමේදී, මම මේ වගේ දෙයක් භාවිතා කරමි:

function hide(){
  element.style.opacity = 0;
}

function afterTransition(){
  element.style.display = 'none';
}

මූලද්රව්යය නැවත දිස්වීම සඳහා, මම මේ වගේ දෙයක් කරමි:

function show(){
  element.style.display = 'block';
  tTimeout = setTimeout(timeoutShow, 100);
}

function timeoutShow(){
  element.style.opacity = 1;
}

එය ක්‍රියාත්මක වේ, මෙතෙක්!


මෙය ක්‍රියාත්මක වන්නේ කාල ප්‍රමාදය නිසා මිස ජාවාස්ක්‍රිප්ට් විධාන වෙනම කාර්යයන් නිසා නොවේ. කාල ප්‍රමාදයන් බොහෝ අවස්ථාවන්හිදී හොඳ විසඳුමක් ලෙස පෙනේ :)

10

මම අද මේ දෙසට දිව ගියේ position: fixedමා නැවත භාවිතා කරන මොඩලයක් සමඟිනි . මට එය තබා ගැනීමට නොහැකි වූ display: noneඅතර එය සජීවීකරණය කිරීමට නොහැකි විය, එය පෙනුමට පනින විට සහ z-index(negative ණ අගයන් යනාදිය) අමුතු දේවල් ද කළේය.

මම ද භාවිතා කරන ලදී height: 0කිරීමට height: 100%, නමුත් බහුවිධ පෙනී විට එය පමණක් වැඩ කළා. මෙය ඔබ භාවිතා කළ left: -100%හෝ වෙනත් දෙයකට සමාන වේ.

එවිට සරල පිළිතුරක් ඇති බව මට හැඟී ගියේය. සහ වොයිලා:

පළමුව, ඔබේ සැඟවුණු මොඩලය. දැනුම් දීමකින් ද heightවේ 0, සහ පරීක්ෂා heightඑය සතුව ඇති සංක්රමණයන් දී ප්රකාශ ... 500ms, මගේ කට වඩා වැඩි වන opacityසංක්රාන්ති . මතක තබා ගන්න, මෙය පිටතට යන ෆේඩ්-අවුට් සංක්‍රාන්තියට බලපායි: මොඩලය එහි පෙරනිමි තත්වයට ගෙන ඒම.

#modal-overlay {
    background: #999;
    background: rgba(33,33,33,.2);
    display: block;
    overflow: hidden;
    height: 0;
    width: 100%;
    position: fixed;
    top: 0;
    left: 0;
    opacity: 0;
    z-index: 1;
    -webkit-transition: height 0s 500ms, opacity 300ms ease-in-out;
       -moz-transition: height 0s 500ms, opacity 300ms ease-in-out;
            -ms-transition: height 0s 500ms, opacity 300ms ease-in-out;
         -o-transition: height 0s 500ms, opacity 300ms ease-in-out;
        transition: height 0s 500ms, opacity 300ms ease-in-out;
}

දෙවනුව, ඔබේ දෘශ්‍ය මාදිලිය. ඔබ එය සකස් කරන .modal-activeබව පවසන්න body. දැන් heightවන 100%, මාගේ සංක්රමණය ද වෙනස් වී ඇත. මට අවශ්‍ය heightවන්නේ එය ක්ෂණිකව වෙනස් කිරීම සහ opacityගත යුතු දෙයයි 300ms.

.modal-active #modal-overlay {
    height: 100%;
    opacity: 1;
    z-index: 90000;
    -webkit-transition: height 0s, opacity 300ms ease-in-out;
       -moz-transition: height 0s, opacity 300ms ease-in-out;
        -ms-transition: height 0s, opacity 300ms ease-in-out;
         -o-transition: height 0s, opacity 300ms ease-in-out;
            transition: height 0s, opacity 300ms ease-in-out;
}

එය එයයි, එය චාම් එකක් මෙන් ක්‍රියා කරයි.


විකුණුම්කරුගේ පෙර සැකසූ දේපල පෙළගැස්වීමේ ශෛලිය සඳහා ඉහළ නැංවීම
George

10

මෙම ගැටළුව සඳහා මම වඩා හොඳ ක්‍රමයක් සොයා ගතිමි, ඔබට CSS සජීවිකරණය භාවිතා කළ හැකි අතර අයිතම පෙන්වීම සඳහා ඔබේ පුදුමාකාර බලපෑමක් ඇති කළ හැකිය.

    .item {
     display: none;
}

.item:hover {
     display: block;
     animation: fade_in_show 0.5s
}

@keyframes fade_in_show {
     0% {
          opacity: 0;
          transform: scale(0)
     }
     100% {
          opacity: 1;
          transform: scale(1)
     }
}

මෙම ප්‍රයෝජනවත් ඉඟියට ස්තූතියි.
සෙඩාත් කුම්කු

9

මෙම පිළිතුරු කිහිපයකින් සහ වෙනත් තැනක යෝජනා වලින් ගත් විට, පහත දැක්වෙන දෑ හොවර් මෙනු සඳහා ඉතා හොඳින් ක්‍රියා කරයි (මම මෙය  විශේෂයෙන් බූට්ස්ට්‍රැප් 3 සමඟ භාවිතා කරමි ):

nav .dropdown-menu {
    display: block;
    overflow: hidden;
    max-height: 0;
    opacity: 0;
    transition: max-height 500ms, opacity 300ms;
    -webkit-transition: max-height 500ms, opacity 300ms;
}
nav .dropdown:hover .dropdown-menu {
    max-height: 500px;
    opacity: 1;
    transition: max-height 0, opacity 300ms;
    -webkit-transition: max-height 0, opacity 300ms;
}

ඔබ ද භාවිතා කළ හැකි heightවෙනුවට max-heightසිට ඔබ අගයන් දෙකම නියම නම් height:autoසමග අවසර නැත transitions. max-heightඅවශ්‍යතාවන්ගේ හොවර් අගය heightමෙනුවේ අගයට වඩා වැඩි විය හැක.


3
එය කදිම උපක්‍රමයක් නමුත් අඩුපාඩුවක් තිබේ. සංක්‍රාන්ති කාලය උස මත රඳා පවතී. විචල්ය උස සහිත මෙනු කිහිපයක් තිබේ නම්, උපරිම උසකට වඩා උස ඇති මූලද්‍රව්‍යයන් මනාව සජීවීකරණය කරයි. කෙසේ වෙතත් කෙටි ඒවා නොගැලපෙන අත්දැකීමක් ලබා දෙමින් වේගයෙන් සජීවීකරණය කරයි.
පරිශීලක

6

මම මෙම ගැටළුව කිහිප වතාවක්ම දැක ඇති අතර දැන් සරලවම:

.block {
  opacity: 1;
  transition: opacity 250ms ease;
}

.block--invisible {
  pointer-events: none;
  opacity: 0;
}

පංතිය එකතු කිරීමෙන් block--invisibleමුළු මූලද්‍රව්‍යයන්ම ක්ලික් කළ නොහැකි නමුත් එය පිටුපස ඇති සියලුම මූලද්‍රව්‍යයන් pointer-events:noneවනුයේ සියලුම ප්‍රධාන බ්‍රව්සර්වල සහය ඇති නිසාය (IE <11 නැත).


කරුණාකර ඔබට මෙය උදාහරණයක් ලෙස දැක්විය හැකිද?
ගරෙතස්

1
මෙය හොඳින් ක්‍රියාත්මක වන නමුත් දර්ශක සිදුවීම් 11 ට අඩු IE සමඟ ක්‍රියා නොකරන බව සැලකිල්ලට ගත යුතුය
user1702965

11 ට අඩු IE සඳහා සටහනක් එකතු කරන ලදි
ඩොමිනික් ඇන්ජරර්

සෑම දෙයකටම ඉහළින් ඔබට මූලද්‍රව්‍යය පැවසීමට අවශ්‍ය නම් (උදාහරණයක් ලෙස මෙනුවක්) මෙය අවංකවම මෙය කළ හැකි පිරිසිදුම ක්‍රමයයි. 2019 දී සහයෝගය ස්ථිරයිpointer-events
ජොෂ් ඩේවන්පෝට්

5

වෙත වෙනස් overflow:hiddenකරන්න overflow:visible. එය වඩා හොඳින් ක්රියා කරයි. මම මේ ආකාරයට භාවිතා කරමි:

#menu ul li ul {
    background-color:#fe1c1c;
    width:85px;
    height:0px;
    opacity:0;
    box-shadow:1px 3px 10px #000000;
    border-radius:3px;
    z-index:1;
    -webkit-transition:all 0.5s ease;
    -moz-transition:all 0.6s ease;
}

#menu ul li:hover ul  {
    overflow:visible;
    opacity:1;
    height:140px;
}

visibleවඩා හොඳ වන්නේ overflow:hiddenහරියටම a ලෙස ක්‍රියා කරන බැවිනි display:none.


මේක තමයි මට ටිකට් එක. ස්තූතියි!
ඩෑන් ලොවෙන්හර්ස්

5

ජාවාස්ක්‍රිප්ට් අවශ්‍ය නොවන අතර අතිශය විශාල උස අවශ්‍ය නොවේ. ඒ වෙනුවට, max-heightඔබේ පෙළ අංග මත සකසා, remහෝ හෝ වැනි අකුරු සාපේක්ෂ ඒකකයක් භාවිතා කරන්න em. මේ ආකාරයෙන්, ඔබේ බහාලුමට වඩා උපරිම උසක් සැකසිය හැකි අතර, ප්‍රමාදයක් වළක්වා ගැනීම හෝ මෙනුව වැසෙන විට “පැනීම”:

HTML

<nav>
  <input type="checkbox" />
  <ul>
    <li>Link 1</li>
    <li>Link 1</li>
    <li>Link 1</li>
    <li>Link 1</li>
  </ul>
</nav>

CSS

nav input + ul li { // Notice I set max-height on li, not ul
   max-height: 0;
}

nav input:checked + ul li {
   max-height: 3rem; // A little bigger to allow for text-wrapping - but not outrageous
}

මෙහි උදාහරණයක් බලන්න: http://codepen.io/mindfullsilence/pen/DtzjE


මේ හා සමානව ඔබට ඔබේ පෙළෙහි රේඛීය උස සකසා එය බිංදුවට පරිවර්තනය කළ හැකිය. ඇතුළත පෙළ පමණක් තිබේ නම්, මෙය කන්ටේනරය සඟවනු ඇත.
vicmortelmans

ඇයි ඡන්ද කිහිපයක්? මෙය ඇත්තෙන්ම හොඳ පිළිතුරක් වන අතර එය මා භාවිතා කරන පිළිතුර විය හැකිය.
mwilcox

wmwilcox එය ස්ථාවර උස භාවිතා කරන නිසා ගතික අන්තර්ගතයන් සමඟ වැඩ කිරීමේදී එය නරක ය (ඇස්තමේන්තුගත උස පවා). එය ප්‍රයෝජනවත් වන්නේ පෙළ අන්තර්ගතයට පමණි.
ෆේබියන් වොන් එලර්ට්ස්

5

ගිලර්මෝ වෙතින් පිළිගත් පිළිතුර ලිවීමෙන් පසුව, 2012-04-03 හි CSS සංක්‍රාන්ති පිරිවිතර දෘශ්‍යතා සංක්‍රාන්තියේ හැසිරීම වෙනස් කළ අතර දැන් සංක්‍රාන්ති-ප්‍රමාදය භාවිතා නොකර මෙම ගැටළුව කෙටි ආකාරයකින් විසඳා ගත හැකිය :

.myclass > div {
                   transition:visibility 1s, opacity 1s;
                   visibility:hidden;  opacity:0
               }
.myclass:hover > div
               {   visibility:visible; opacity:1 }

සංක්‍රාන්ති දෙකම සඳහා නියම කර ඇති ධාවන කාලය සාමාන්‍යයෙන් සමාන විය යුතුය (දෘශ්‍යතාව සඳහා තරමක් දිගු කාලයක් ගැටළුවක් නොවුවද).

ධාවනය වන අනුවාදයක් සඳහා, මගේ බ්ලොග් සටහන CSS සංක්‍රාන්ති දෘශ්‍යතාව බලන්න .

"සංදර්ශනයේ සංක්‍රාන්ති: දේපල" යන ප්‍රශ්නයේ මාතෘකාව ලියන්න සහ පිළිගත් පිළිතුරට රූයි මාර්ක්ස් සහ ජෝෂ්ගේ අදහස් වලට ප්‍රතිචාර වශයෙන්:

දර්ශනය හෝ දෘශ්‍යතා දේපල භාවිතා කරන්නේ නම් එය අදාළ නොවන අවස්ථාවන්හිදී මෙම විසඳුම ක්‍රියාත්මක වේ (බොහෝ විට මෙම ප්‍රශ්නයේ දී මෙන්).

එය display:noneඅදෘශ්‍යමාන වන පරිදි මූලද්‍රව්‍යය මුළුමනින්ම ඉවත් නොකරනු ඇත , නමුත් එය තවමත් ලේඛන ප්‍රවාහයේ රැඳී සිටින අතර පහත සඳහන් මූලද්‍රව්‍යයන්ගේ පිහිටීමට බලපෑම් කරයි.

සමාන මූලද්‍රව්‍යය මුළුමනින්ම ඉවත් කරන සංක්‍රාන්ති display:noneඋස (වෙනත් පිළිතුරු සහ අදහස් වලින් දැක්වෙන පරිදි), උපරිම-උස, හෝ ආන්තික-ඉහළ / පහළ භාවිතා කළ හැකිය , නමුත් උස සංක්‍රාන්තිය කරන්නේ කෙසේදැයි බලන්න : 0; උස දක්වා: ස්වයංක්‍රීය; CSS භාවිතා කරනවාද? සහ මගේ බ්ලොග් සටහන සංදර්ශක සහ උස ගුණාංග පිළිබඳ CSS සංක්‍රාන්ති සඳහා වන ක්‍රියාමාර්ග .

ජෝර්ජ්මිලෝගේ අදහස් දැක්වීමට ප්‍රතිචාර වශයෙන්: ගුණාංග සහ සංක්‍රාන්ති දෙකම අවශ්‍ය වේ: මූසික සිදුවීම් කෙරෙහි තවමත් ප්‍රතික්‍රියා කරන මූලද්‍රව්‍යය වළක්වා ගැනීම සඳහා ෆැඩ්-ඉන් සහ ෆේඩ්-අවුට් සජීවිකරණයක් සහ දෘශ්‍යතා දේපල නිර්මාණය කිරීම සඳහා පාරාන්ධතා දේපල භාවිතා කරයි. දෘශ්‍ය ආචරණය සඳහා පාරාන්ධතාවය සහ ෆේඩ්-අවුට් අවසන් වන තුරු සැඟවී සිටීම ප්‍රමාද කිරීම සඳහා සංක්‍රාන්ති අවශ්‍ය වේ.


4

(සැඟවුණු විට අවකාශය අත්පත් කර නොගැනීම) opacityසමඟ සංයෝජනය කිරීමෙන් මම අවසානයේ විසඳුමක් සොයා ගතිමි position absolute.

.toggle {
  opacity: 0;
  position: absolute;
  transition: opacity 0.8s;
}

.parent:hover .toggle {
  opacity: 1;
  position: static;
}

4

CSS සංක්‍රාන්ති ආරම්භ කරන ඕනෑම අයෙකු ඔබ එකවර ප්‍රදර්ශන දේපල (වාරණය / කිසිවක්) වෙනස් කරන්නේ නම් ඒවා ක්‍රියාත්මක නොවන බව ඉක්මනින් සොයා ගනී යැයි මම සැක කරමි. තවම සඳහන් කර නොමැති එක් ක්‍රියාමාර්ගයක් නම්, ඔබට display:block/noneමූලද්‍රව්‍යය සැඟවීමට / පෙන්වීමට දිගටම භාවිතා කළ හැකි නමුත් එහි පාරාන්ධතාව 0 ලෙස සකසන්න, එවිට එය පවාdisplay:block , එවිට එය තවමත් නොපෙනෙන ලෙස පෙනේ.

එය මැකී යාම සඳහා, පාරාන්ධතාව 1 ට සැකසෙන සහ පාරාන්ධතාව සඳහා සංක්‍රාන්තිය නිර්වචනය කරන "ඔන්" වැනි තවත් CSS පන්තියක් එක් කරන්න. ඔබ සිතූ පරිදි, මූලද්‍රව්‍යයට “ඔන්” පන්තිය එක් කිරීමට ඔබට ජාවාස්ක්‍රිප්ට් භාවිතා කිරීමට සිදුවනු ඇත, නමුත් අවම වශයෙන් ඔබ තවමත් සත්‍ය සංක්‍රාන්තිය සඳහා CSS භාවිතා කරයි.

PS ඔබ දෙකම කළ යුතු තත්වයකට ඔබ display:blockපත්වී "පන්තිය" මත "එකතු කරන්න, ඒ සමඟම, setTimeout භාවිතා කර දෙවැන්න කල් දමන්න. එසේ නොමැතිනම්, බ්‍රව්සරය මේ දෙකම එකවර සිදුවන බව දකින අතර සංක්‍රාන්තිය අක්‍රීය කරයි.


නියමයි, ස්තූතියි! මම තවත් පිළිතුරක් ලිව්වේ ඇත්ත වශයෙන්ම ක්‍රියාත්මක වන උදාහරණයක් සමඟ ය display:none.
mojuba

4

එය පහත පරිදි සරල ය :)

@keyframes fadeout {
    0% { opacity: 1; height: auto; }
    90% { opacity: 0; height: auto; }
    100% { opacity: 0; height: 0;
}
animation: fadeout linear 0.5s 1 normal forwards !important;

එය මැකී යන්නට ගන්න, ඉන්පසු එය සාදන්න height 0;. ඉදිරියට භාවිතා කිරීමට වග බලා ගන්න එවිට එය අවසාන තත්වයේ රැඳේ.


පංතිය ඉවත් කිරීමේදී මෙය ක්ෂණිකව යළි පිහිටුවනු ඇත, එබැවින් එය හොඳ අදහසක් නොවේ
ෂෝන් ටී

2

මෙම විසඳුම විශිෂ්ට අනුකූලතාවයක් ඇති අතර මම එය තවම දැක නැත:

.hidden-element {
  position: absolute;
  z-index: -1;
  pointer-events: none;
  visibility: hidden;
  opacity: 0;
  transition: visibility 0s, opacity .5s ease-out;
}

.hidden-element.visible {
  position: static;
  z-index: auto;
  pointer-events: auto;
  visibility: visible;
  opacity: 1;
}

පැහැදිලි කිරීමක් : එය භාවිතා visibility: hidden( "ප්රදර්ශනය-සහ-සජීවීකරණය" එක් එක් පියවර තුළ සමඟ අනුකූල වන) උපක්රමය, නමුත් එය සංයෝජන භාවිතා position: absolute; z-index: -1; pointer-events: none;සැඟවුණු රුවනයකි වග බව ගැනීමට අවකාශය ගත වන්නේ නැත හා පරිශීලක අන්තර් පිළිතුරු නැත .


1
නමුත් positionනිශ්චල වෙනස මගින් මූලද්‍රව්‍යය අවුල් වනු ඇත, නැත?
ආර්සිලම්

හොඳයි, ඇත්ත වශයෙන්ම: position: absoluteපැහැදිලි කිරීමෙහි විස්තර කර ඇති පරිදි මූලද්‍රව්‍යය කිසිදු ඉඩක් නොගන්නා බව අදහස් වේ. එය මාරුවී position: staticදර්ශනය වූ විට, එය සාමාන්‍ය මූලද්‍රව්‍යයක් මෙන් අවකාශයක් ගනු ඇත, එය මෙම ප්‍රශ්නයේ ලක්ෂ්‍යයයි. මම ඔබට යෝජනා කරනවා ඔබට එය උත්සාහ කරන්න!
ක්‍රිස්ටෝෆ් මාරොයිස්

2
මම කලා. නමුත් මම නිවැරදිව තේරුම් ගත්තා නම් ප්‍රශ්නය වූයේ සංක්‍රාන්තියයි . "සුමට සජීවිකරණ" වල මෙන්.
ආර්සිලම්

2

ප්‍රදර්ශනය භාවිතා කරමින් - ඔබ බලාපොරොත්තු වූ ස්වාභාවික ආකාරයට වැඩ කිරීමට ඔබට මෙය ලබා ගත හැකිය, නමුත් ජාවාස්ක්‍රිප්ට් භාවිතා කරමින් හෝ වෙනත් අය එක් ටැගයක් සමඟ තවත් ටැගයක් සහිත විසිතුරු උපක්‍රමයක් යෝජනා කර ඇති පරිදි, එය ක්‍රියාත්මක කිරීමට බ්‍රව්සරය තල්ලු කළ යුතුය. අභ්‍යන්තර ටැගය CSS සහ මානයන් තවදුරටත් සංකීර්ණ කරන බැවින් මම එය ගණන් ගන්නේ නැත, එබැවින් මෙන්න ජාවාස්ක්‍රිප්ට් විසඳුම:

https://jsfiddle.net/b9chris/hweyecu4/17/

වැනි කොටුවකින් ආරම්භ කිරීම:

<div id="box" class="hidden">Lorem</div>

සැඟවුණු පෙට්ටියක්.

div.hidden {
    display: none;
}
#box {
    transition: opacity 1s;
}
    

අපි අදාළ q / a හි ඇති උපක්‍රමයක් භාවිතා කිරීමට බලාපොරොත්තු වෙමු, බ්‍රව්සරය ක්ෂණිකව තල්ලු කිරීම සඳහා ඕෆ්සෙට් හයිට් පරීක්ෂා කරන්න:

https://stackoverflow.com/a/16575811/176877

පළමුව, ඉහත උපක්‍රමය විධිමත් කරන පුස්තකාලයක්:

$.fn.noTrnsn = function () {
    return this.each(function (i, tag) {
        tag.style.transition = 'none';
    });
};
$.fn.resumeTrnsn = function () {
    return this.each(function (i, tag) {
        tag.offsetHeight;    
        tag.style.transition = null;
    });
};

ඊළඟට, අපි එය කොටුවක් හෙළි කිරීමට භාවිතා කර එය මැකී යන්නෙමු:

$('#button').on('click', function() {
    var tag = $('#box');
    if (tag.hasClass('hidden'))
        tag.noTrnsn().removeClass('hidden')
        .css({ opacity: 0 })
        .resumeTrnsn().css({ opacity: 1 });
    else
        tag.css({ opacity: 0 });
});

මෙය කොටුව ඇතුළට සහ පිටතට මැකී යයි. ඒ නිසා, .noTrnsn()සංක්රමණයන් නිමී, එසේ නම් අපි ඉවත් hiddenවැටුණ වන පන්තිය, displayසිට noneප්රකෘති කිරීමට, block. අපි පසුව අභාවයට යාමට සුදානම් වීම සඳහා පාරාන්ධතාව 0 ලෙස සකසා ඇත්තෙමු. දැන් අපි වේදිකාව සකසා ඇති හෙයින්, අපි සංක්‍රාන්ති නැවත ක්‍රියාත්මක කරමු.resumeTrnsn() . අවසාන වශයෙන්, පාරාන්ධතාව 1 ට සැකසීමෙන් සංක්‍රාන්තිය ඉවත් කරන්න.

පුස්තකාලය නොමැතිව, ප්‍රදර්ශනය සඳහා වන වෙනස සහ පාරාන්ධතාවයට වෙනස් වීම යන දෙකම අපට අනවශ්‍ය ප්‍රති .ල ලබා දෙනු ඇත. අපි සරලවම පුස්තකාල ඇමතුම් ඉවත් කළහොත්, අපට කිසිදු සංක්‍රාන්තියක් නොලැබේ.

ෆේ out ් out ට් සජීවිකරණය අවසානයේ ඉහත කිසිවක් නැවත කිසිවෙකුට දර්ශනය නොවන බව සලකන්න. අපිට රසිකයෙක් වෙන්න පුළුවන්. 0 සිට උස දක්වා වර්ධනය වන සහ වර්ධනය වන එකක් සමඟ අපි එසේ කරමු.

විසිතුරු!

https://jsfiddle.net/b9chris/hweyecu4/22/

#box {
    transition: height 1s, opacity 1s;
}

අපි දැන් උස හා පාරාන්ධතාව යන දෙකම සංක්‍රමණය කරමින් සිටිමු. අපි උස සකසන්නේ නැති බව සලකන්න, එයින් අදහස් වන්නේ එය පෙරනිමිය , auto. සාම්ප්‍රදායිකව මෙය සංක්‍රමණය කළ නොහැක - ස්වයංක්‍රීයව සිට පික්සල් අගයකට (0 වැනි) මාරු වීමෙන් ඔබට සංක්‍රාන්තියක් නොලැබේ. අපි පුස්තකාලය හා තවත් එක් පුස්තකාල ක්‍රමයක් සමඟ වැඩ කරන්නෙමු:

$.fn.wait = function (time, fn) {
    if (time)
        this.delay(time);
    if (!fn)
        return this;

    var _this = this;
    return this.queue(function (n) {
        fn.call(_this);
        n();
    });
};

මෙය jQuery 3.x හි දැන් බැහැර කර ඇති කිසිදු සජීවිකරණ රාමුවක් අවශ්‍ය නොවී, jQuery හි දැනට පවතින fx / සජීවිකරණ පෝලිම්වලට සහභාගී වීමට අපට ඉඩ සලසන පහසු ක්‍රමයකි. මම jQuery ක්‍රියා කරන ආකාරය පැහැදිලි කිරීමට යන්නේ නැත, නමුත් පැවසීමට ප්‍රමාණවත්, .queue()සහ.stop() jQuery සපයන ජලනල ජලනල අපගේ සජීවිකරණ එකිනෙකා මතට ​​යාම වැළැක්වීමට උපකාරී වේ.

විනිවිදක පහළ ආචරණය සජීවිකරණය කරමු.

$('#button').on('click', function() {
    var tag = $('#box');
    if (tag.hasClass('hidden')) {
        // Open it
        // Measure it
        tag.stop().noTrnsn().removeClass('hidden').css({
            opacity: 0, height: 'auto'
        });
        var h = tag.height();
        tag.css({ height: 0 }).resumeTrnsn()
        // Animate it
        .css({ opacity: 1, height: h })
        .wait(1000, function() {
            tag.css({ height: 'auto' });
        });
    } else {
        // Close it
        // Measure it
        var h = tag.noTrnsn().height();
        tag.stop().css({ height: h })
        .resumeTrnsn()
        // Animate it
        .css({ opacity: 0, height: 0 })
        .wait(1000, function() {
            tag.addClass('hidden');
        });
    }
});

මෙම කේතය ආරම්භ වන්නේ #boxඑහි පන්තිය පරීක්ෂා කිරීමෙන් සහ එය දැනට සැඟවී තිබේද යන්න පරීක්ෂා කිරීමෙනි. නමුත් එය wait()එකතු කිරීමෙන් පුස්තකාල ඇමතුම භාවිතා කරයිhidden කරයි, විනිවිදක / ෆේඩ් සජීවිකරණයේ අවසානයේ පන්තිය එය සැබවින්ම සැඟවී ඇත්දැයි සොයා ගැනීමට ඔබ අපේක්ෂා කරයි - ඉහත සරල උදාහරණයට කළ නොහැකි දෙයක්. මෙය සිදුවන්නේ මූලද්‍රව්‍යය නැවත නැවතත් ප්‍රදර්ශනය කිරීමට / සැඟවීමට ඉඩ සලසමිනි, එය පෙර උදාහරණයේ දෝෂයක් විය, මන්ද සැඟවුණු පන්තිය කිසි විටෙකත් ප්‍රතිෂ් .ාපනය නොවූ බැවිනි.

.noTrnsn()සාමාන්‍යයෙන් සජීවිකරණ සඳහා වේදිකාව සැකසීම සඳහා CSS සහ පන්ති වෙනස්කම් කැඳවනු ලැබීම ඔබට දැක ගත හැකිය , මිනුම් ගැනීම ඇතුළුව, #boxපරිශීලකයාට එය පෙන්වීමකින් තොරව අවසාන උස කුමක් දැයි මැනීම වැනි , ඇමතීමට පෙර.resumeTrnsn() සහ එම සම්පූර්ණ කට්ටලයෙන් සජීවිකරණය කිරීම වැනි. එහි ඉලක්කය CSS අගයන් කරා.

පැරණි පිළිතුර

https://jsfiddle.net/b9chris/hweyecu4/1/

ක්ලික් කිරීමෙන් ඔබට එය සංක්‍රමණය කළ හැකිය:

function toggleTransition() {
  var el = $("div.box1");

  if (el.length) {
    el[0].className = "box";
    el.stop().css({maxWidth: 10000}).animate({maxWidth: 10001}, 2000, function() {
        el[0].className = "box hidden";
    });
  } else {
    el = $("div.box");
    el[0].className = "box";
    el.stop().css({maxWidth: 10001}).animate({maxWidth: 10000}, 50, function() {
        el[0].className = "box box1";
    });
  }

  return el;
}

someTag.click(toggleTransition);

CSS යනු ඔබ අනුමාන කරන දෙයයි:

.hidden {
    display: none;
}
.box {
    width: 100px;
    height: 100px;
    background-color: blue;
    color: yellow;
    font-size: 18px;
    left: 20px;
    top: 20px;
    position: absolute;
    -webkit-transform-origin: 0 50%;
    transform-origin: 0 50%;
    -webkit-transform: scale(.2);
    transform: scale(.2);
    -webkit-transition: transform 2s;
    transition: transform 2s;
}
.box1{
    -webkit-transform: scale(1);
    transform: scale(1);
}

ප්රධාන දෙය නම් දර්ශන දේපල තල්ලු කිරීමයි. සැඟවුණු පංතිය ඉවත් කර එම්එස් 50 ක් බලා සිටීමෙන් පසුව එකතු කළ පංතිය හරහා සංක්‍රාන්තිය ආරම්භ කිරීමෙන් අපට එය දිස්වන අතර පසුව අපට අවශ්‍ය පරිදි පුළුල් වේ. සැඟවුණු අයදුම් කිරීමට පෙර සජීවිකරණය අවසන් වන තෙක් අපි බලා සිටීම හැර, වෙනත් මාර්ගයකට යාම ද ඒ හා සමාන වේ.

සටහන: ධාවන තත්වයන් .animate(maxWidth)වළක්වා ගැනීම සඳහා මම මෙහි අපයෝජනය කරමි setTimeout. setTimeoutඔබ හෝ වෙනත් අයෙකු නොදැන කේතය තෝරාගත් විට සැඟවුණු දෝෂ හඳුන්වා දීමට ඉක්මන් වේ. .animate()පහසුවෙන් මරා දැමිය හැකිය .stop(). සම්මත එෆ්එක්ස් පෝලිමේ 50 එම්එස් හෝ 2000 එම්එස් ප්‍රමාදයක් තැබීමට මම එය භාවිතා කරමි, මෙහි වෙනත් කෝඩර් ගොඩනැඟිලි විසින් සොයා ගැනීමට / විසඳීමට පහසුය.


1

මට සමාන ප්‍රශ්නයක් තිබුනේ මට පිළිතුර සොයාගත නොහැකි විය. ගූගල් සෙවුම් කිහිපයක් පසුව මාව මෙහි ගෙන ගියේය. මා බලාපොරොත්තු වූ සරල පිළිතුර මට හමු නොවූ බව සලකන විට, අලංකාර සහ .ලදායී විසඳුමකට මම බාධා කළෙමි.

එය හැරෙනවා visibilityCSS දේපල වටිනාකමක් ඇති collapseසාමාන්යයෙන් වගුව අයිතම සඳහා භාවිතා කරන. කෙසේ වෙතත්, වෙනත් මූලද්‍රව්‍යයන් මත භාවිතා කරන්නේ නම් එය සැඟවුණු ඒවා ලෙස effectively ලදායී ලෙස පරිවර්තනය කරයි , display: hiddenනමුත් මූලද්‍රව්‍යය කිසිදු ඉඩක් නොගන්නා අමතර හැකියාවෙන් යුක්ත වන අතර ඔබට තවමත් මූලද්‍රව්‍යය සජීවීකරණය කළ හැකිය.

පහත දැක්වෙන්නේ ක්‍රියාවෙහි සරල උදාහරණයකි.

function toggleVisibility() {
  let exampleElement = document.querySelector('span');
  if (exampleElement.classList.contains('visible')) {
    return;
  }
  exampleElement.innerHTML = 'I will not take up space!';
  exampleElement.classList.toggle('hidden');
  exampleElement.classList.toggle('visible');
  setTimeout(() => {
    exampleElement.classList.toggle('visible');
    exampleElement.classList.toggle('hidden');
  }, 3000);
}
#main {
  display: flex;
  flex-direction: column;
  width: 300px;
  text-align: center;
}

.hidden {
  visibility: collapse;
  opacity: 0;
  transition: visibility 2s, opacity 2s linear;
}

.visible {
  visibility: visible;
  opacity: 1;
  transition: visibility 0.5s, opacity 0.5s linear;
}
<div id="main">
  <button onclick="toggleVisibility()">Click Me!</button>
  <span class="hidden"></span>
  <span>I will get pushed back up...</span>
</div>


1

ගැටළුවට ඇති සරලම විශ්වීය විසඳුම නම්: display:noneඔබේ CSS හි සඳහන් කිරීමට නිදහස්ව සිටින්න, කෙසේ වෙතත් ඔබට එය blockජාවාස්ක්‍රිප්ට් භාවිතයෙන් (හෝ වෙනත් ඕනෑම දෙයකට) වෙනස් කිරීමට සිදුවනු ඇත , එවිට ඔබට ඇත්ත වශයෙන්ම ප්‍රශ්නාර්ථයේ ඔබේ අංගයට පන්තියක් එක් කිරීමට සිදුවේ. setTimeout () සමඟ සංක්‍රමණය කරයි . එච්චරයි.

එනම්:

<style>
    #el {
        display: none;
        opacity: 0;
    }
    #el.auto-fade-in {
        opacity: 1;
        transition: all 1s ease-out; /* Future, future, please come sooner! */
        -webkit-transition: all 1s ease-out;
        -moz-transition: all 1s ease-out;
        -o-transition: all 1s ease-out;
    }
</style>

<div id=el>Well, well, well</div>

<script>
    var el = document.getElementById('el');
    el.style.display = 'block';
    setTimeout(function () { el.className = 'auto-fade-in' }, 0);
</script>

මෙය නවතම බුද්ධිමත් බ්‍රව්සර් වලින් පරීක්ෂා කරන ලදී. නිසැකවම එය ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් 9 හෝ ඊට පෙර ක්‍රියා නොකළ යුතුය.


1

මම හිතන්නේ සල්මන් පීකේට ආසන්නතම පිළිතුර ඇත. පහත දැක්වෙන CSS සජීවිකරණ සමඟ එය අයිතමයක් ඇතුළත හෝ පිටත මැකී යයි. කෙසේ වෙතත්, දර්ශන දේපල සුමටව සජීවීකරණය නොකරයි, පාරාන්ධතාවය පමණි.

@-webkit-keyframes fadeIn {
    from { opacity: 0; }
      to { opacity: 1; }
}

@-webkit-keyframes fadeOut {
    from { opacity: 1; }
      to { opacity: 0; }
}

කිසිවක් පෙන්වීම සඳහා සංදර්ශක කොටසෙහි සිට චලනය වන මූලද්‍රව්‍යය සජීවිකරණය කිරීමට ඔබට අවශ්‍ය නම්, එය දැනට CSS සමඟ පමණක් කළ හැකි බව මට නොපෙනේ. ඔබ උස ලබා ගත යුතු අතර උස අඩු කිරීමට CSS සජීවිකරණයක් භාවිතා කළ යුතුය. පහත උදාහරණයේ පෙන්වා ඇති පරිදි CSS සමඟ මෙය කළ හැකි නමුත් මූලද්‍රව්‍යයක් සඳහා සජීවිකරණය කිරීමට අවශ්‍ය උස අගයන් දැන ගැනීම උපක්‍රමශීලී වනු ඇත.

jsFiddle උදාහරණය

CSS

@-webkit-keyframes pushDown {
  0% {
    height: 10em;
  }
  25% {
    height: 7.5em;
  }
  50% {
    height: 5em;
  }
  75% {
    height: 2.5em;
  }
  100% {
    height: 0em;
  }
}

.push-down {
    -webkit-animation: pushDown 2s forwards linear;
}

ජාවාස්ක්‍රිප්ට්

var element = document.getElementById("element");

// Push item down
element.className = element.className + " push-down";

1

සංක්‍රාන්ති සිදුවීම් සමඟ ඔබට මෙය කළ හැකිය, එබැවින් ඔබ සංක්‍රාන්තිය සඳහා CSS පන්ති දෙකක් සාදයි, එකක් සජීවිකරණය රඳවා තබා ගැනීම, දර්ශනය කිසිවක් නොපවතින. සජීවිකරණය අවසන් වූ පසු ඔබ ඒවා මාරු කරනවාද? මගේ නඩුවේදී මම බොත්තමක් එබුවහොත් නැවත පන්ති පෙන්විය හැකි අතර පන්ති දෙකම ඉවත් කරන්න.

පහත ස්නිපටය උත්සාහ කරන්න ...

$(document).ready(function() {
  // Assign transition event
  $("table").on("animationend webkitAnimationEnd", ".visibility_switch_off", function(event) {
    // We check if this is the same animation we want
    if (event.originalEvent.animationName == "col_hide_anim") {
      // After the animation we assign this new class that basically hides the elements.
      $(this).addClass("animation-helper-display-none");
    }

  });

  $("button").click(function(event) {

    $("table tr .hide-col").toggleClass(function() {
      // We switch the animation class in a toggle fashion...
      // and we know in that after the animation end, there
      // is will the animation-helper-display-none extra
      // class, that we nee to remove, when we want to
      // show the elements again, depending on the toggle
      // state, so we create a relation between them.
      if ($(this).is(".animation-helper-display-none")) {
        // I'm toggling and there is already the above class, then
        // what we want it to show the elements , so we remove
        // both classes...
        return "visibility_switch_off animation-helper-display-none";
      }
      else {
        // Here we just want to hide the elements, so we just
        // add the animation class, the other will be added
        // later be the animationend event...
        return "visibility_switch_off";
      }
    });
  });
});
table th {
  background-color: grey;
}

table td {
  background-color: white;
  padding: 5px;
}

.animation-helper-display-none {
  display: none;
}

table tr .visibility_switch_off {
  animation-fill-mode: forwards;
  animation-name: col_hide_anim;
  animation-duration: 1s;
}

@-webkit-keyframes col_hide_anim {
  0% {opacity: 1;}
  100% {opacity: 0;}
}

@-moz-keyframes col_hide_anim {
  0% {opacity: 1;}
  100% {opacity: 0;}
}

@-o-keyframes col_hide_anim {
  0% {opacity: 1;}
  100% {opacity: 0;}
}

@keyframes col_hide_anim {
  0%   {opacity: 1;}
  100% {opacity: 0;}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <theader>
    <tr>
      <th>Name</th>
      <th class='hide-col'>Age</th>
      <th>Country</th>
    </tr>
  </theader>
  <tbody>
    <tr>
      <td>Name</td>
      <td class='hide-col'>Age</td>
      <td>Country</td>
    </tr>
  </tbody>
</table>

<button>Switch - Hide Age column with fadeout animation and display none after</button>


0

ඔබේ පන්ති සැකසීමට ඔබ jQuery භාවිතා කරන්නේ නම්, මෙය 100% ක් ක්‍රියා කරයි:

$(document).ready(function() {
  $('button').click(function() {
    var container = $('.container');
    
    if (!container.hasClass('active')) {
      container.addClass('show').outerWidth();
      container.addClass('active');
    }
    else {
      container.removeClass('active').one('transitionend', function() {
        container.removeClass('show');
      });
    }
  });
});
.container {
  display: none;
  opacity: 0;
  transition: opacity 0.3s ease;
}

.container.show {
  display: flex;
}
 
.container.active {
  opacity: 1;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button type="button">Toggle</button>

<div class="container">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>

ඇත්ත වශයෙන්ම ඔබට jQuery .fadeIn()සහ .fadeOut()ශ්‍රිත භාවිතා කළ හැකිය , නමුත් ඒ වෙනුවට පන්ති සැකසීමේ වාසිය නම් ඔබට හැර වෙනත් දර්ශන අගයකට මාරුවීමට අවශ්‍ය නම් block(පෙරනිමියෙන් .fadeIn()සහ .fadeOut()).

මෙන්න මම flexලස්සන ෆේඩ් ආචරණයකින් ප්‍රදර්ශනය කිරීමට සංක්‍රමණය වෙමි .


0

භාවිතා කිරීම වෙනුවට displayඔබට අවශ්‍ය වන තෙක් 'ඕෆ්-ස්ක්‍රීන්' මූලද්‍රව්‍යය ගබඩා කර, පසුව ඔබට අවශ්‍ය ස්ථානයට එහි පිහිටීම සකසා එකවර එය පරිවර්තනය කළ හැකිය. මෙය වෙනත් සැලසුම් ගැටළු රාශියක් ගෙන එයි, එබැවින් ඔබේ සැතපුම් ගණන වෙනස් විය හැකිය.

displayදෘශ්‍ය පා for කයන්ට අන්තර්ගතය ප්‍රවේශ වීමට ඔබට අවශ්‍ය බැවින් ඔබට කෙසේ හෝ භාවිතා කිරීමට අවශ්‍ය නොවනු ඇත, බොහෝ දුරට දෘශ්‍යතාව සඳහා නීතිවලට අවනත වීමට උත්සාහ කරයි - එනම්, එය ඇසට නොපෙනේ නම්, එය නියෝජිතයාට අන්තර්ගතයක් ලෙස නොපෙන්වයි.


0

ඔබ හුදෙක් CSS භාවිතා කළ හැකිය සැඟවීම් වෙනුවට සඟවා / දෘශ්ය: ප්රදර්ශනය : කිසිවක් / වාරණ

div {
    visibility:hidden;
    -webkit-transition: opacity 1s ease-out;
    -moz-transition: opacity 1s ease-out;
    -o-transition: opacity 1s ease-out;
    transition: opacity 1s ease-out;
    opacity: 0;
}

parent:hover > div {
    opacity: 1;
    visibility: visible;
}

5
මෙය හිස් සිදුරක් ඉතිරි කර අවකාශය වෙන් කර ගනී. ඔබට අවකාශයක් බිඳ දැමීමට අවශ්‍ය නම් ඔබට උස හෝ වෙනත් දේපලක් සජීවීකරණය කළ යුතුය.
මාසි සුටන්

0

ඔබට මෙයද භාවිතා කළ හැකිය:

.dropdown {
    height: 0px;
    width: 0px;
    opacity: .0;
    color: white;
}
.dropdown:hover {
    height: 20px;
    width: 50px;
    opacity: 1;
    transition: opacity 200ms;
    /* Safari */
    -webkit-transition: opacity 200ms;
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.