সিএসএস প্রদর্শনের সম্পত্তিতে স্থানান্তর


1444

আমি বর্তমানে একটি সিএসএস 'মেগা ড্রপডাউন' মেনু ডিজাইন করছি - মূলত একটি নিয়মিত সিএসএস-কেবল ড্রপডাউন মেনু, তবে একটিতে বিভিন্ন ধরণের সামগ্রী রয়েছে।

মুহূর্তে এটা যে সিএসএস 3 ট্রানজিশন 'প্রদর্শন' সম্পত্তি ক্ষেত্রে প্রযোজ্য হবে না মনে হচ্ছে, অর্থাৎ আপনার কাছ থেকে ট্রানজিশন কোন ধরণের ব্যবহার করতে পারবেন না display: noneকরার display: block(অথবা কোনো সমন্বয়)।

উপরের উদাহরণ থেকে দ্বিতীয় স্তরের মেনুতে 'ফেড ইন' করার কোনও উপায় কি যখন শীর্ষ স্তরের মেনু আইটেমগুলির মধ্যে কেউ উপরে যায়?

আমি সচেতন যে আপনি visibility:সম্পত্তিতে স্থানান্তর ব্যবহার করতে পারেন , তবে আমি কার্যকরভাবে এটি ব্যবহারের কোনও উপায় ভাবতে পারি না।

আমি উচ্চতা ব্যবহার করার চেষ্টা করেছি, কিন্তু এটি কেবল খারাপভাবে ব্যর্থ হয়েছে।

আমি এটিও সচেতন যে জাভাস্ক্রিপ্ট ব্যবহার করে এটি অর্জন করা তুচ্ছ, তবে আমি কেবল সিএসএস ব্যবহারের জন্য নিজেকে চ্যালেঞ্জ জানাতে চেয়েছিলাম এবং আমি মনে করি যে আমি কিছুটা ছোট হয়ে আসছি।


সিএসএস ট্রানজিশনটি যদি আপনি ডিসপ্লে না করে অস্বচ্ছ সম্পত্তিটিতে প্রয়োগ করেন তবে কী কাজ করে?
পল ডি ওয়েট

13
অবস্থান: পরম; দৃশ্যমানতা: লুকানো; প্রদর্শন হিসাবে একই: কিছুই নয়;
জাওয়াদ

8
@ জাওয়াদ: আপনি যদি তেমন কিছু যুক্ত করেন তবেই z-index:0
ড্যানম্যান

7
@Jawad: এটা ব্যবহার না করার জন্য সুপারিশ করা হচ্ছে visibility: hidden, যদি না আপনি চান স্ক্রিন এটা পড়তে (সাধারণত ব্রাউজার যেহেতু হবে না)। এটি কেবলমাত্র উপাদানটির দৃশ্যমানতার সংজ্ঞা দেয় (যেমন বলার মতো opacity: 0), এবং এটি এখনও নির্বাচনযোগ্য, ক্লিকযোগ্য এবং এটি আগে যা কিছু থাকত; এটা ঠিক দেখা যায় না।
ফরেস্ট ক্যাটস

1
pointer-eventsআইই 8,9,10 এ কোনও সমর্থন নেই , তাই এটি সবসময় ঠিক থাকে না
স্টিভেন প্রবিলিনস্কি

উত্তর:


1349

আপনি দুটি বা আরও বেশি ট্রানজিশন সংঘবদ্ধ করতে পারেন এবং 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 একটি আরও ভাল সমাধান
জোশ বেদো

739
এটি দুর্দান্ত তবে সমস্যাটি হ'ল "দৃশ্যমানতা লুকানো" উপাদানগুলি এখনও স্থান দখল করে যখন "কোনও কিছুই প্রদর্শন করে না"।
রুই মার্কস

41
আমি সম্ভবত কিছু অনুপস্থিত, তবে আপনি দৃশ্যমানতা এবং অস্বচ্ছতা উভয়কেই কেন পরিবর্তন করবেন? অস্বচ্ছটিকে 0 টি উপাদানটি আড়াল করে রাখবেন না - কেন আপনার দৃশ্যমানতাটি গোপনে সেট করতে হবে?
জিএমএ

21
@ জর্জিমিলো যদি আপনি কেবল অস্বচ্ছতা সেট করেন তবে উপাদানটি এখনও পৃষ্ঠা রেন্ডারিংয়ে রয়েছে (উদাহরণস্বরূপ আপনি চিন্তাকে ক্লিক করতে পারবেন না)।
অ্যাড্রোয়েডেন্যাট

800

এটি কাজ করতে আপনাকে অন্যান্য উপায়ে উপাদানটি আড়াল করতে হবে।

আমি উভয়কে <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.০ বি ২ এবং সাফারি ৫.০ একেবারে ঠিক আছে ... বাগ বা আমি কিছু মিস করেছি?
রিচার্ড টেপ

7
আমি একমত যে এটি ঠিক আছে এবং এটি অবদান রাখবে; ভবিষ্যতের ভ্রমণকারীদের জন্য একটি মাথা আপ। আমি ক্রোমে একটি কার্যনির্বাহী সমাধান পেয়েছি, কিন্তু আমি এটি আইফোন 4 এ ব্যর্থ হতে দেখেছি: visibility:hidden; opacity:0; -webkit-transition: all .2s ease-in-out;এটি কেবল সঠিকভাবে রূপান্তর করে না, তবে লক্ষ্য উপাদানটি কখনই প্রদর্শিত হবে না। কিউএ আপনাকে, আমি এবং আপনার মাকে ব্যর্থ করবে।
সিম্পলজি

1
আপনি প্রকৃতপক্ষে দৃশ্যমান সম্পত্তিটিও স্থানান্তর করতে পারেন .. কেবলমাত্র বলেছেন
Cu7l4ss

2
আপনি যদি নিজের লুকানো অবস্থাকে এতে সেট করেন height: 0;এবং এটিকে রূপান্তর না করেন তবে উত্তরণটি কার্যকর হবে না। আমি চেষ্টা করেছি কেবলমাত্র অস্বচ্ছতার স্থানান্তরিত করার চেষ্টা করে। আমাকে অপসারণ করতে হয়েছিলheight: 0;
chovy

10
আপনাকে overflow: hiddenঅনেক ধন্যবাদ বলেই আপনি একটি ভোট জিতেছেন !
থিয়াগো

277

এই পোস্টের সময়ে সমস্ত বড় ব্রাউজারগুলি আপনি displayসম্পত্তি পরিবর্তন করার চেষ্টা করলে সিএসএস স্থানান্তরগুলি অক্ষম করে , তবে সিএসএস অ্যানিমেশনগুলি এখনও ঠিকঠাকভাবে কাজ করে তাই আমরা এগুলিকে কাজের ভিত্তিতে ব্যবহার করতে পারি।

উদাহরণ কোড (আপনি নিজের মেনুতে এটি প্রয়োগ করতে পারেন) ডেমো :

আপনার স্টাইলশিটে নিম্নলিখিত সিএসএস যুক্ত করুন:

@-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 সেট পরার কাজ বলে মনে হচ্ছে না, কিন্তু এই কৌতুক ঠিক সূক্ষ্ম কাজ মনে হয়।
এলিয়ট উইঙ্কলার 20

41
ধন্যবাদ, খুব দরকারী। তবে কীভাবে এটি বিবর্ণ হবে?
ইলিউউ

1
এই উত্তরের প্রথম অনুচ্ছেদটি মোটেই বোঝা যায় না। আপনি displayসম্পত্তিটি ব্যবহার করার মুহুর্তে ব্রাউজারগুলি কেবলমাত্র সমস্ত রূপান্তর অক্ষম করে না - এর আসলে কোনও কারণ নেই reason এমনকি যদি তারা করেনি , কেন অ্যানিমেশন তারপর কাজ করবে? আপনি displayCSS অ্যানিমেশনগুলিতে সম্পত্তিটি ব্যবহার করতে পারবেন না ।
বোলটক্লক

7
উত্তম উত্তর, স্থানান্তর সহ সম্ভব নয় তবে হ্যাঁ অ্যানিমেশন।
মিকেল

6
বিপরীত অ্যানিমেশন সম্পর্কে কীভাবে, যখন উপাদানটি ধীরে ধীরে অদৃশ্য হয়ে যায়?
সবুজ

77

আমি সন্দেহ যে কারণে যে ট্রানজিশন অক্ষম যদি হয় 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! তাই না নিছক অদৃশ্যতা, এটা তার নিজের উপাদান রেন্ডারিং মোড মানে কোন সব সময়ে রেন্ডারিং এর)।


8
উপরের সমাধানগুলি যতটা ভাল হতে পারে ততই সন্তুষ্টির কারণ হিসাবে কেন স্থানান্তরের বৈশিষ্ট্যগুলি প্রদর্শনের বৈশিষ্ট্যগুলিতে প্রযোজ্য হয় না সে সম্পর্কে একটি বোধগম্য ব্যাখ্যা পেয়েছি was
kqr

8
আমি একমত নই এটি সম্পূর্ণ জ্ঞান করতে পারে। যদি প্রদর্শন হয়: প্রদর্শিত হবে না: রূপান্তরটি শুরু হওয়ার সাথে সাথেই অবরুদ্ধ হয়ে পড়ে, এটি দুর্দান্ত। এবং ফিরে ট্রানজিশনের জন্য, যদি এটি প্রদর্শন থেকে প্রদর্শিত হয়: প্রদর্শন করতে ব্লক করুন: রূপান্তর শেষে ডান নয়, এটি নিখুঁত হবে be
কার্টিস ইয়ালাপ

2
যদি আপনি কল্পনা করতে না পারেন যে কোনও বিন্দু থেকে একটি আয়তক্ষেত্রের অ্যানিমেশনটি কেমন লাগে তবে আপনার সমস্যা হয়েছে। আয়তক্ষেত্রাকার স্থান দখল করতে কোনও স্থান দখল করা থেকে স্থানান্তর খুব স্পষ্ট, যেমন আপনি প্রতিবারের মতো প্রতিটি অ্যাপ্লিকেশনের মতো মাউস দিয়ে একটি আয়তক্ষেত্রকে টেনে আনেন do এই ব্যর্থতার ফলস্বরূপ, সর্বাধিক উচ্চতা এবং নেতিবাচক মার্জিনের সাথে জড়িত এমন অনেক হ্যাক রয়েছে যা এটিকে তাত্পর্যপূর্ণ। কেবলমাত্র যা কাজ করে তা হ'ল 'আসল' উচ্চতা ক্যাশে করা এবং তারপরে শূন্য থেকে জাভাস্ক্রিপ্টের সাহায্যে ক্যাশেড মানটিতে অ্যানিম্যাট করা। দু: খিত।
ট্রায়ঙ্কো

2
ট্রাইনিকো: প্রদর্শন: উপাদানটির আকারকে 0 x 0 এর একটি আয়তক্ষেত্র পরিবর্তন করে না - এটি এটি ডিওএম থেকে সরিয়ে দেয়। আপনি একটি আয়তক্ষেত্র থেকে বিন্দুতে প্রস্থ এবং উচ্চতার বৈশিষ্ট্যগুলি শূন্যে অ্যানিমেট করে অ্যানিমেট করতে পারবেন এবং তারপরে অন্যান্য উপাদানগুলি তার চারপাশে প্রবাহিত হবে যেন এটিতে 'প্রদর্শন: কিছুই নয়' তবে এর 'প্রদর্শন' বৈশিষ্ট্যটি 'অবরুদ্ধ' থাকবে; উপাদানটি এখনও ডিওমে রয়েছে। প্রদর্শন: ব্লক এবং প্রদর্শনের মধ্যে অ্যানিমেট করার ধারণা: কোনওটিই হাস্যকর নয়: কোনও মধ্যবর্তী রাষ্ট্র নেই। হয় কোনও ডিওএম-তে একটি উপাদান উপস্থিত থাকে বা এটি অল্প অদৃশ্য তা বিবেচনা করে না।
স্টিভ থর্প

1
এটি পৃথক বৈশিষ্ট্য অ্যানিমেট করা হাস্যকর নয়। অন্যান্য বৈশিষ্ট্যগুলির মতো স্বচ্ছ বৈশিষ্ট্যগুলি displayসহজেই স্থানান্তরিত করা যায় না, তবে এর অর্থ এই নয় যে সময়টি গুরুত্বপূর্ণ নয়। নিয়ন্ত্রণ করতে সক্ষম হচ্ছে যখন থেকে রূপান্তরটি disply:blockকরতে display:noneঘটবে খুবই গুরুত্বপূর্ণ। ঠিক যেমন @ কার্টিসইলাপ এটি বর্ণনা করেছে। আমি যদি স্থানান্তর opacity:1করতে চাই opacity:0এবং তারপরে পরিবর্তিত display:blockহতে display:noneচাই তবে তা করা আমার পক্ষে সক্ষম হবে।
জেনস

55

সিএসএসে থাকা কলব্যাকগুলির পরিবর্তে আমরা 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 এমএস), যদিও heightঅ্যানিমেশনটি সম্পূর্ণ করতে 0 এমএস লাগে (সমতুল্য display: block) এবং opacity600 এমএস লাগে।

  2. যখন visibleশ্রেণিটি সরানো হয়, opacityঅ্যানিমেশন শুরু হয় (0 এমএস দেরি, 400 এমএস সময়কাল) এবং উচ্চতা 400 এমএস অপেক্ষা করে এবং কেবল তখনই তাত্ক্ষণিকভাবে (0 এমএস) প্রাথমিক মান পুনরুদ্ধার করে ( display: noneঅ্যানিমেশন কলব্যাকের সমতুল্য )।

দ্রষ্টব্য, এই পদ্ধতির ব্যবহার করা চেয়ে ভাল visibility। এই ধরনের ক্ষেত্রে, উপাদানটি এখনও পৃষ্ঠাটিতে স্থান দখল করে এবং এটি সর্বদা উপযুক্ত নয়।

আরও উদাহরণের জন্য দয়া করে এই নিবন্ধটি দেখুন


8
বিস্মিত এটির আরও বেশি কিছু নেই - এই চতুর সমাধানটি কোনওভাবে পুরোপুরি কার্যকর হয়।
ধীরে ধীরে

3
এটি কেবল এমনটি দিয়ে কাজ করে height:100%যা কিছু ক্ষেত্রে বিন্যাসটি ধ্বংস করতে পারে। দুর্দান্ত সমাধান, যদি এটি কোনও সমস্যা না হয়। দু'দফা নির্দেশক কার্যকারীগুলির মধ্যে একটি।
ফ্যাবিয়ান ভন এলার্টস

এটা অসাধারণ! আমি আমার ক্ষেত্রে এটিকে আরও সহজ করতে সক্ষম হয়েছি কারণ আমি চেয়েছিলাম ফেইড-আউট অ্যানিমেশন সময়টি ফেইড-ইন সময়ের মতোই হোক same বরং ব্যবহার না করে transition: height 0ms 0ms, opacity 600ms 0ms, আমি শুধু ব্যবহার করা transition-delay: 0s
জ্যাকব লকার্ড

52

display রূপান্তর কাজ করে এমন বৈশিষ্ট্যগুলির মধ্যে একটি নয়।

সিএসএস বৈশিষ্ট্যগুলির তালিকার জন্য অ্যানিমেটেবল সিএসএস বৈশিষ্ট্যগুলি দেখুন যেগুলিতে ট্রানজিশনগুলি প্রয়োগ করা যেতে পারে। দেখুন ক্ষেপক, উপরন্তু, এবং সঞ্চয়: সিএসএস মূল্যবোধ ও ইউনিট মডিউল শ্রেনী 4, মিশ্রন মানগুলি কিভাবে তারা ইন্টারপোলেট জন্য।

সিএসএস 3 পর্যন্ত 9.1 তে তালিকাভুক্ত ছিল সিএসএস থেকে সম্পত্তি (শুধুমাত্র সতর্কতা পপআপ বন্ধ করুন)

আমি উচ্চতা ব্যবহার করার চেষ্টা করেছি, কিন্তু এটি কেবল খারাপভাবে ব্যর্থ হয়েছে।

শেষবার যখন আমাকে এটি করতে হয়েছিল, আমি max-heightপরিবর্তে এটি ব্যবহার করেছি , এটি একটি অ্যানিম্যাটযোগ্য সম্পত্তি (যদিও এটি হ্যাকের কিছুটা ছিল, এটি কাজ করেছিল), তবে সাবধান হন যে জটিল পৃষ্ঠাগুলি বা লো-এন্ড মোবাইল ব্যবহারকারীদের জন্য এটি খুব ঝাঁকুনির মতো হতে পারে ডিভাইস।


লিঙ্কটি আর অ্যানিম্যাটযোগ্য বৈশিষ্ট্য বিভাগে সরাসরি নির্দেশ করছে না।
অ্যান্ড্রু ল্যাম

1
@ অ্যান্ড্রুলাম স্থির ধন্যবাদ।
রোবোক্যাট

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এখানে? এবং ফায়ারফক্স সম্পর্কে কি? দুর্ভাগ্যক্রমে আমি যে ডেমো পৃষ্ঠার উল্লেখ করছি তাতে সম্পর্কিত কিছু খুঁজে পাচ্ছি না।
সেবাস্তিয়ান ভম মিয়ার

ধন্যবাদ @ সেবাস্তিয়ানজি। আমি সংশোধন করেছি এবং উপরে আরও কিছু তথ্য যুক্ত করেছি।
মনীষ প্রধান

@ সেবাস্তিয়ান ভোম মীর: পুরানো ফায়ারফক্স সংস্করণগুলির "-moz-" বিক্রেতা উপসর্গ প্রয়োজন, সম্পাদিত কোড দেখুন
Herr_Schwabullek

23
যদি আমি কিছু হারিয়ে না ফেলে "ডেমো" লিঙ্কটি আর একটি উপ-মেনু স্থানান্তর দেখায় না।
বাস্তবসম্মত

1
যে স্থান কোনও স্থান দখল করে না এমন কোনও কিছুর সঠিক সংক্রমণ (যেমন প্রদর্শন হিসাবে কিছুই নয়) স্থান দখল করে এমন কিছুতে (প্রদর্শন: ব্লক), মাত্রাগুলির একটি বিস্তার, বিবর্ণ নয়। যদি এটি দৃশ্যমানতার জন্য লুকিয়ে থাকে (যা স্থান দখল করে তবে দৃশ্যমান নয়) তবে এটি আকার একই থাকে এবং ফেইড-ইন উপযুক্ত। এই উত্তরগুলির কোনওটিই সমস্যার সমাধান করে না।
ট্রায়ঙ্কো 16'17

21

ডাব্লু 3 সি ওয়ার্কিং ড্রাফ্ট অনুসারে 19 নভেম্বর 2013display কোনও অ্যানিমেটেবল সম্পত্তি নয় । ভাগ্যক্রমে, visibilityঅ্যানিম্যাটযোগ্য। অস্বচ্ছতার একটি রূপান্তর ( জেএসফিডাল ) দিয়ে আপনি এর রূপান্তরটি শৃঙ্খলাবদ্ধ করতে পারেন :

  • এইচটিএমএল:

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

    #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 আমি এটা পরিবর্তন করে সংশোধন করা হয়েছে 0করতে 0s। স্পষ্টতই, অতীতে আমি ব্রাউজারটি যা পরীক্ষার জন্য ইউনিটবিহীন শূন্য বারের জন্য ব্যবহার করেছি। যাইহোক, ইউনিটলেস সময়গুলি 29 সেপ্টেম্বর 2016 , ডাব্লু 3 সি প্রার্থী সুপারিশের অংশ নয়
feklee

এটি আরও upvated করা উচিত। আমি এটি সেরা সমাধানগুলির মধ্যে একটি বলে মনে করেছি।
আর্থার তারাসভ

বিলম্বের ব্যবহারটি কীভাবে এটি কাজ করে তা বোঝার জন্য কেবল সর্বোত্তম যুক্তি। প্রাণবন্ত এবং লুকান আনহাইড করুন, এবং সঞ্জীবিত করুন। আমার জন্য নিখুঁত সমাধান
ব্রুনো পিটেলি গোনাল্ভেস

14

সম্পাদনা: প্রদর্শনের কোনওটিই এই উদাহরণে প্রয়োগ করা হচ্ছে না।

@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
@ অ্যালেক্স ঠিক আছে টাইপো স্থির মজার বিষয় হ'ল আমার উত্তর এমনকি প্রত্যাশার মতো কাজ করে না, তবে এটি ভাবা যুক্তিযুক্ত যে এটি ব্রাউজারগুলি সমর্থন না করা পর্যন্ত আমি এটি রাখব।
পাভেল

3
কার্সারস সেট সহ আপনি এই ঝাঁকুনিতে দেখতে পাচ্ছেন display: none, বাস্তবে কখনও প্রয়োগ করা হয় না। jsfiddle.net/3e6sduqh
রোবস্টারবাক

13

আমার ঝরঝরে জাভাস্ক্রিপ্ট ট্রিকটি পুরো দৃশ্যটিকে দুটি আলাদা ফাংশনে আলাদা করতে হবে !

জিনিস প্রস্তুত করতে, একটি বৈশ্বিক চলক ঘোষণা করা হয় এবং একটি ইভেন্ট হ্যান্ডলার সংজ্ঞায়িত হয়:

  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(নেতিবাচক মানগুলি ইত্যাদি) অদ্ভুত জিনিসগুলিও করেছিল।

আমি একটি ব্যবহার করছিলেন 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;
}

এটাই, এটি কবজির মতো কাজ করে।


বিক্রেতার উপসর্গযুক্ত বৈশিষ্ট্যগুলি সারিবদ্ধ করার আপনার স্টাইলটির জন্য জোরদার 👍
জর্জ গ্রিন

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:autotransitionmax-heightheight


2
এটি একটি দুর্দান্ত কৌশল কিন্তু একটি ঘাটতি আছে। স্থানান্তর সময় উচ্চতার উপর নির্ভর করে। যদি ভেরিয়েবল উচ্চতা সহ একাধিক মেনু থাকে তবে সর্বাধিক উচ্চতার উচ্চতার সাথে থাকা উপাদানগুলি সুন্দরভাবে অ্যানিমেটেড হবে। তবে সংক্ষিপ্ততরগুলি খুব দ্রুত অ্যানিমেট করবে, একটি অসঙ্গত অভিজ্ঞতা দেয়।
ব্যবহারকারী

8

আমি এই সমস্যার জন্য আরও ভাল উপায় খুঁজে পেয়েছি, আপনি 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)
     }
}

এই দরকারী টিপ জন্য ধন্যবাদ। এটি নিখুঁত কাজ করছে।
শেদাত কুমকু

6

আমি একাধিকবার এই সমস্যাটি পেরিয়ে এসেছি এবং এখন কেবল সঙ্গে চলেছি:

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

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

শ্রেণিটি যুক্ত block--invisibleকরে পুরো এলিমেন্টগুলি ক্লিকযোগ্য হবে না তবে এর পিছনে থাকা সমস্ত উপাদানগুলি pointer-events:noneহ'ল কারণ এটি সমস্ত বড় ব্রাউজার দ্বারা সমর্থিত (কোনও আইই <11 নেই)।


আপনি একটি উদাহরণ স্থাপন করতে পারেন, দয়া করে?
গ্যারেথাস

1
এটি ভালভাবে কাজ করে তবে লক্ষ করা উচিত যে পয়েন্টার-ইভেন্টগুলি 11 এর নীচে
IE- এর

11

আপনার যদি সমস্ত কিছুর শীর্ষে উপাদান বলা প্রয়োজন (উদাহরণস্বরূপ একটি মেনু) তবে এটি এখনই করার জন্য সত্যই এটি সবচেয়ে পরিষ্কার উপায় যে 2019 সালে সমর্থনটি দৃ is 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;
}

visibleoverflow:hiddenঠিক যেমন একটি হিসাবে কাজ কারণ ভাল display:none


এই আমার জন্য টিকিট ছিল। ধন্যবাদ!
ডেন লোয়েহের্জেজ

5

জাভাস্ক্রিপ্ট প্রয়োজন হয় না, এবং কোনও অতিমাত্রায় বিশাল সর্বাধিক উচ্চতার প্রয়োজন হয় না। পরিবর্তে, আপনার সেট max-heightআপনার পাঠ্য উপাদানে, এবং যেমন একটি ফন্ট আপেক্ষিক ইউনিট ব্যবহার remবা em। এইভাবে, আপনি আপনার ধারক থেকে সর্বাধিক উচ্চতা নির্ধারণ করতে পারবেন, যখন মেনুটি বন্ধ হয়ে যায় তখন দেরি বা "পপিং" এড়ানো হবে:

এইচটিএমএল

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

সিএসএস

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


এটির মতোই আপনি নিজের পাঠ্যের উপরে লাইন-উচ্চতা সেট করতে এবং এটিকে শূন্যে রূপান্তর করতে পারেন। ভিতরে যদি কেবল পাঠ্য থাকে তবে এটি ধারকটি আড়াল করবে।
ভিসমোর্টেলম্যানস

এত ভোট কেন? এটি সত্যিই একটি ভাল উত্তর এবং আমি সম্ভবত এটি ব্যবহার করতে পারি।
mwilcox

@ এমওয়িলকক্স কারণ এটি একটি নির্দিষ্ট উচ্চতা ব্যবহার করে, যা ডায়নামিক সামগ্রী (আনুমানিক উচ্চতা এমনকি সমেত) এর সাথে কাজ করার সময় খারাপ। এবং এটি কেবল পাঠ্য সামগ্রীতেই কার্যকর।
ফ্যাবিয়ান ভন এলার্টস

5

গিলারমোর কাছ থেকে গৃহীত উত্তরটি লেখার পরে, 2012-04-03 এর সিএসএস রূপান্তরের বিশদটি দৃশ্যমানতার পরিবর্তনের আচরণকে বদলেছে এবং এখন এই সমস্যাটি সংক্ষিপ্ত -বিলম্বের ব্যবহার ছাড়াই সংক্ষিপ্ত উপায়ে সমাধান করা সম্ভব :

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

উভয় ট্রানজিশনের জন্য নির্দিষ্ট রান সময়টি সাধারণত অভিন্ন হওয়া উচিত (যদিও দৃশ্যমানতার জন্য কিছুটা দীর্ঘ সময় কোনও সমস্যা নয়)।

চলমান সংস্করণের জন্য, আমার ব্লগ পোস্টে সিএসএস স্থানান্তর দৃশ্যমানতা দেখুন

"ডিসপ্লেতে রূপান্তর: সম্পত্তি" এর প্রশ্নের শিরোনাম এবং রুই মার্কেসের মন্তব্যের জবাবে এবং গৃহীত উত্তরের জোশ:

এই সমাধান ক্ষেত্রে কাজ করে যেখানে প্রদর্শন বা দৃশ্যমান সম্পত্তি ব্যবহার করা হয় (এটি সম্ভবত এই প্রশ্নের ক্ষেত্রে ছিল) তবে এটি অপ্রাসঙ্গিক

এটি উপাদানটিকে পুরোপুরি সরিয়ে দেবে না display:none, কেবল এটি অদৃশ্য করে তোলে, তবে এটি এখনও নথির প্রবাহে থেকে যায় এবং নিম্নলিখিত উপাদানগুলির অবস্থানকে প্রভাবিত করে।

রূপান্তরগুলি যা সম্পূর্ণরূপে উপাদানটিকে সরিয়ে দেয় display:noneউচ্চতা (অন্যান্য উত্তর এবং মন্তব্য দ্বারা নির্দেশিত হিসাবে), সর্বাধিক উচ্চতা বা মার্জিন-শীর্ষ / নীচে ব্যবহার করে করা যেতে পারে, তবে আরও দেখুন কীভাবে আমি উচ্চতা স্থানান্তর করতে পারি: 0; উচ্চতা: অটো; সিএসএস ব্যবহার করছেন? এবং আমার ব্লগ পোস্টে প্রদর্শন এবং উচ্চতা বৈশিষ্ট্যগুলিতে সিএসএস রূপান্তরগুলির জন্য ওয়ার্কআরাউন্ডস পোস্ট করে

জর্জমিলোর মন্তব্যের জবাবে: উভয় বৈশিষ্ট্য এবং উভয়ই ট্রানজিশন প্রয়োজন: অস্বচ্ছতা সম্পত্তিটি একটি বিবর্ণ ইন এবং ফেইড-আউট অ্যানিমেশন তৈরি করতে ব্যবহৃত হয় এবং মাউস ইভেন্টগুলিতে প্রতিক্রিয়াযুক্ত উপাদানটি এড়ানোর জন্য দৃশ্যমান সম্পত্তিটি ব্যবহৃত হয়। ভিজ্যুয়াল এফেক্টের জন্য অস্বচ্ছতার উপর এবং ফিড-আউট শেষ না হওয়া অবধি লুকানোর ক্ষেত্রে বিলম্ব করার জন্য দৃশ্যমানতার উপর ট্রানজিশনগুলির প্রয়োজন।


4

অবশেষে আমার সাথে সমাধানের opacityমাধ্যমে position absolute(লুকিয়ে থাকার সময় স্থান দখল না করা) সমাধান পেয়েছি for

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

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

4

আমার সন্দেহ হয় যে কেউ কেবল সিএসএস স্থানান্তর শুরু করছে তা দ্রুত আবিষ্কার করে যে আপনি একই সাথে ডিসপ্লে সম্পত্তি (ব্লক / কিছুই নয়) পরিবর্তন করছেন তবে তারা কাজ করে না। একটি কাজের কথা যা এখনও উল্লেখ করা হয়নি তা হ'ল আপনি display:block/noneউপাদানটি আড়াল / দেখানোর জন্য ব্যবহার চালিয়ে যেতে পারেন তবে এর অস্বচ্ছতা 0 তে সেট করে রেখেছেন যাতে display:blockএটি থাকা সত্ত্বেও এটি এখনও অদৃশ্য।

তারপরে এটি বিবর্ণ হওয়ার জন্য, অন্য একটি সিএসএস ক্লাস যুক্ত করুন যেমন "অন" যা অপসারণকে 1 তে সেট করে এবং অস্বচ্ছতার জন্য সংক্রমণকে সংজ্ঞায়িত করে। আপনি যেমন কল্পনা করে থাকতে পারেন, আপনাকে সেই "অন" ক্লাসটিকে উপাদানটিতে যুক্ত করতে জাভাস্ক্রিপ্ট ব্যবহার করতে হবে, তবে কমপক্ষে আপনি প্রকৃত রূপান্তরের জন্য সিএসএস ব্যবহার করছেন।

পিএস যদি আপনি এমন কোনও পরিস্থিতিতে নিজেকে খুঁজে পান যেখানে আপনাকে উভয়ই করা দরকার display:block, এবং একই সাথে "অন" ক্লাস যুক্ত করুন, সেটটাইমআউট ব্যবহার করে পরবর্তীটি পিছিয়ে দিন। অন্যথায়, ব্রাউজার উভয় জিনিসকে একবারে ঘটতে দেখায় এবং রূপান্তর অক্ষম করে।


দুর্দান্ত, ধন্যবাদ! আমি আরেকটি উত্তর লিখেছিলাম একটি উদাহরণ সহ যা আসলে কাজ করে display:none
মোজুবা

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

আপনি এটি প্রাকৃতিকভাবে প্রত্যাশা মতো প্রাকৃতিক পদ্ধতিতে কাজ করতে পারেন - প্রদর্শনটি ব্যবহার করে - তবে জাভাস্ক্রিপ্ট ব্যবহার করে বা অন্যরা যেমন অন্যের মধ্যে একটি ট্যাগ দিয়ে অভিনব কৌতুকের পরামর্শ দিয়েছেন তেমন আপনাকে ব্রাউজারটি কাজ করতে হবে thr আমি অভ্যন্তরীণ ট্যাগটির জন্য যত্ন নিই না কারণ এটি CSS এবং মাত্রা আরও জটিল করে তোলে, তাই এখানে জাভাস্ক্রিপ্ট সমাধান রয়েছে:

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

যেমন একটি বাক্স দিয়ে শুরু:

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

একটি লুকানো বাক্স।

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

আমরা ব্রাউজারটিকে তাত্ক্ষণিকভাবে থ্রোট করার জন্য অফসেটহাইট যাচাই করে একটি সম্পর্কিত কিউ / এ-তে পাওয়া একটি কৌশল ব্যবহার করতে যাচ্ছি:

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থেকে ফ্লিপ হয় ,। তারপরে বিবর্ণ হওয়ার জন্য প্রস্তুত হওয়ার জন্য আমরা অস্বচ্ছতা 0 তে সেট করে রেখেছি Now এখন আমরা স্টেজটি সেট করে রেখেই, আমরা ট্রানজিশনগুলি আবার চালু করি । এবং অবশেষে, অস্বচ্ছতাটিকে 1 এ সেট করে ট্রানজিশনটি বন্ধ করুন।noneblock.resumeTrnsn()

লাইব্রেরি ব্যতীত প্রদর্শনের পরিবর্তন এবং অস্বচ্ছতা উভয়ই আমাদের অনাকাঙ্ক্ষিত ফলাফল অর্জন করতে পারে। আমরা যদি সহজভাবে লাইব্রেরি কলগুলি সরিয়ে ফেলি তবে আমরা কোনও ট্রানজিশন পাই না।

মনে রাখবেন যে ফেডআউট অ্যানিমেশন শেষে উপরেরগুলি আবার কারও কাছে প্রদর্শন সেট করে না। যদিও আমরা ফ্যানসিয়ার পেতে পারি। আসুন এমন একটির সাথে এটি করা যাক যা 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 এর বিদ্যমান fx / অ্যানিমেশন কাতারে অংশ নিতে দেয়, এখন অ্যানিমেশন ফ্রেমওয়ার্কের কোনও প্রয়োজন নেই যা এখন jQuery 3.x এ বাদ নেই। আমি 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()করার #boxআগে ব্যবহারকারীকে না দেখিয়ে চূড়ান্ত উচ্চতা কী হবে তা পরিমাপ করার মতো পরিমাপ নেওয়া সহ সাধারণভাবে অ্যানিমেশনগুলির জন্য মঞ্চ নির্ধারণ করার পরে আপনি সিএসএস এবং শ্রেণীর পরিবর্তনগুলি ডেকে দেখতে পারেন calling.resumeTrnsn() এবং সেই সম্পূর্ণ সেট থেকে এটি অ্যানিমেট করা তার লক্ষ্য সিএসএসের মানগুলিতে মঞ্চ।

পুরানো উত্তর

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);

সিএসএস হ'ল আপনার অনুমান:

.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);
}

কীটি ডিসপ্লে সম্পত্তিটি বিকাশ করছে। লুকানো শ্রেণিটি সরিয়ে এবং তারপরে ৫০ এমএস অপেক্ষা করে, তারপরে যুক্ত শ্রেণীর মাধ্যমে রূপান্তর শুরু করার পরে , আমরা এটি উপস্থিত হতে পেলাম এবং তারপরে আমরা চাইলে প্রসারিত করব, পরিবর্তে এটি কোনও অ্যানিমেশন ছাড়াই পর্দায় ঝাঁকুনি দেয়। লুকানো প্রয়োগ করার আগে অ্যানিমেশনটি শেষ না হওয়া পর্যন্ত আমরা অপেক্ষা করি না অন্যভাবে, একইভাবে ঘটে।

দ্রষ্টব্য: জাতিগত অবস্থা .animate(maxWidth)এড়াতে আমি এখানে গালি দিচ্ছি setTimeoutsetTimeoutআপনি বা অন্য কেউ অজানা কোড তুললে গোপন বাগগুলি পরিচয় করিয়ে দেওয়া তাড়াতাড়ি হয়। .animate()সহজেই হত্যা করা যেতে পারে .stop()। আমি কেবল এটি স্ট্যান্ডার্ড এফএক্স কিউতে একটি 50 এমএস বা 2000 এমএস বিলম্ব স্থাপন করতে ব্যবহার করছি যেখানে এর উপরে অন্য কোডারগুলি বিল্ডিংয়ের দ্বারা সন্ধান / সমাধান করা সহজ।


1

আমার অনুরূপ সমস্যা ছিল যার উত্তর আমি পাইনি। গুগলের কয়েকটি অনুসন্ধান পরে আমাকে এখানে নিয়ে গেছে। আমি যে সাধারণ উত্তরটির প্রত্যাশা করছিলাম তা আমি খুঁজে পাইনি, আমি এমন একটি সমাধানে হোঁচট খেয়েছি যা মার্জিত এবং কার্যকর উভয়ই উপকারে আসে।

এটি visibilityসিএসএস বৈশিষ্ট্যের একটি মান রয়েছে collapseযা সাধারণত টেবিল আইটেমগুলির জন্য ব্যবহৃত হয় turns যাইহোক, যদি অন্য কোনও উপাদানগুলিতে এটি ব্যবহার করা হয় তা কার্যকরভাবে এগুলিকে গোপন হিসাবে রেন্ডার করে , বেশিরভাগ ক্ষেত্রে একই 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আপনার সিএসএসে নির্দ্বিধায় নির্দ্বিধায় জবস্ক্রিপ্ট blockব্যবহার করে আপনি এটি (বা অন্য যে কোনও কিছুতে) পরিবর্তন করতে পারবেন এবং তারপরে আপনাকে প্রশ্নে আপনার উপাদানটিতে একটি শ্রেণিও যুক্ত করতে হবে যা আসলে সেটটাইমআউট () দিয়ে রূপান্তর করে । এখানেই শেষ.

অর্থাৎ,

<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

আমার মনে হয় সলমনপিকে এর নিকটতম উত্তর রয়েছে। এটি নিম্নলিখিত সিএসএস অ্যানিমেশন সহ কোনও আইটেম ভিতরে বা বাইরে বিবর্ণ হয়ে যায়। যাইহোক, প্রদর্শন সম্পত্তিটি সহজেই অ্যানিমেটেড করে না, কেবল অস্বচ্ছতা।

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

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

আপনি যদি ডিসপ্লে ব্লক থেকে কোনওটি প্রদর্শন না করে সরানো উপাদানটি অ্যানিমেট করতে চান তবে আমি দেখতে পাচ্ছি না যে এটি বর্তমানে কেবল CSS এর মাধ্যমে সম্ভব possible উচ্চতা হ্রাস করতে আপনাকে একটি সিএসএস অ্যানিমেশন ব্যবহার করতে হবে। সিএসএসের সাহায্যে এটি নীচের উদাহরণে যেমন দেখানো সম্ভব, তবে কোনও উপাদানটির জন্য আপনার সঠিক উচ্চতার মানগুলি নির্ধারণ করা কৌশলগত হবে।

jsFood উদাহরণ

সিএসএস

@-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

আপনি এটি ট্রানজিশন ইভেন্টগুলির সাহায্যে করতে পারেন, সুতরাং আপনি স্থানান্তরের জন্য দুটি সিএসএস ক্লাস তৈরি করেন, একটিতে অ্যানিমেশনটি ধরে রাখে, প্রদর্শনটি কোনওটি নয় holding এবং আপনি এনিমেশন শেষ হওয়ার পরে সেগুলি স্যুইচ করবেন? আমার ক্ষেত্রে আমি ডিভগুলি আবার প্রদর্শন করতে পারি যদি আমি একটি বোতাম টিপুন এবং উভয় শ্রেণি সরিয়ে ফেলি।

নীচে স্নিপেট চেষ্টা করুন ...

$(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কোনও উপায়ে ব্যবহার করতে চাইবেন না, যেমন আপনি চাইছেন যে বিষয়বস্তুটি পর্দার পাঠকদের কাছে অ্যাক্সেসযোগ্য হবে, যা বেশিরভাগ অংশে দৃশ্যমানতার জন্য নিয়মগুলি মেনে চলার চেষ্টা করে - যেমন, যদি এটি চোখের কাছে দৃশ্যমান না হয় তবে এটি এজেন্ট হিসাবে সামগ্রী হিসাবে প্রদর্শিত হবে না।


0

আপনি কেবল সিএসএসের দৃশ্যমানতা ব্যবহার করতে পারেন : প্রদর্শনের পরিবর্তে লুকানো / দৃশ্যমান : কিছুই নেই / ব্লক

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

আমি টগল ডিসপ্লে অ্যানিমেট নামে একটি ওপেন সোর্স কঙ্কাল প্রকল্প শুরু করেছি ।

এই কঙ্কাল সহায়ক আপনাকে সহজে jQuery শো / লুকানোর নকল করতে পারবেন, তবে CSS 3 রূপান্তর অ্যানিমেশনগুলি আউট / আউট করার মাধ্যমে।

এটি শ্রেণীর টগলগুলি ব্যবহার করে যাতে আপনি প্রদর্শন ছাড়াও উপাদানগুলিতে আপনার যে কোনও সিএসএস পদ্ধতি ব্যবহার করতে পারেন: কিছুই নয় | ব্লক | টেবিল | ইনলাইন ইত্যাদি পাশাপাশি চিন্তাভাবনা করা যায় এমন অন্যান্য বিকল্প ব্যবহারগুলি।

এর মূল নকশার উদ্দেশ্যটি উপাদান টগল স্টেটগুলির জন্য এবং এটি একটি রিভার্ট স্টেটকে সমর্থন করে যেখানে অবজেক্টটি লুকিয়ে রাখলে আপনি আপনার কীফ্রেমটিকে বিপরীতে চালাতে পারবেন বা উপাদানটি লুকানোর জন্য কোনও বিকল্প অ্যানিমেশন খেলতে পারবেন।

আমি যে ধারণাটিতে কাজ করছি তার জন্য বেশিরভাগ মার্কআপ হ'ল সিএসএস, এবং আসলে খুব কম জাভাস্ক্রিপ্ট ব্যবহৃত হয়েছে।

এখানে একটি ডেমো রয়েছে: http://marcnewton.co.uk/projects/toggle-display-animate/

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.