সিএসএস রূপান্তরটি দৃশ্যমানতার সাথে কাজ করছে না


108

নীচের ভাঁজটিতে, আমি পৃথকভাবে দৃশ্যমানতা এবং অস্বচ্ছতার উপর একটি স্থানান্তর করেছি। পরেরটি কাজ করে তবে পূর্বের কাজ করে না। তদুপরি, দৃশ্যমানতার ক্ষেত্রে, স্থানান্তরের সময়টিকে হোভার আউটে বিলম্ব হিসাবে ব্যাখ্যা করা হয়। ক্রোম এবং ফায়ারফক্স উভয় ক্ষেত্রেই ঘটে। এটি কি বাগ?

http://jsfiddle.net/0r218mdo/3/

মামলা 1:

#inner{
    visibility:hidden;
    transition:visibility 1000ms;
}
#outer:hover #inner{
    visibility:visible;
}

কেস 2:

#inner1{
    opacity:0;
    transition:opacity 1000ms;
}
#outer1:hover #inner1{
    opacity:1;
}

5
পরেরটি কাজ করে কারণ opacity01visibilityvisiblehidden
এইগুলির

উত্তর:


159

এটি কোনও ত্রুটি নয় - আপনি কেবলমাত্র অর্ডিনাল / গণনাযোগ্য বৈশিষ্ট্যগুলিতে রূপান্তর করতে পারেন (একটি সংখ্যাগত শুরু এবং শেষ সংখ্যা মান সহ এটি ভাবার একটি সহজ উপায় ... যদিও কিছু ব্যতিক্রম রয়েছে)।

এটি হ'ল কারণ রূপান্তর দুটি মানের মধ্যে কীফ্রেমগুলি গণনা করে এবং মধ্যবর্তী পরিমাণগুলিকে এক্সট্রাপোলেট করে একটি অ্যানিমেশন তৈরি করে।

visibility এক্ষেত্রে একটি বাইনারি সেটিং (দৃশ্যমান / লুকানো), সুতরাং একবার রূপান্তরের সময়সীমা অতিক্রান্ত হওয়ার পরে, সম্পত্তিটি সরলভাবে রাষ্ট্র পরিবর্তন করে, আপনি এটিকে বিলম্ব হিসাবে দেখেন- তবে এটি আসলে রূপান্তর অ্যানিমেশনের চূড়ান্ত কীফ্রেম হিসাবে দেখা যেতে পারে, মধ্যস্থতাকারী কীফ্রেমগুলি গণনা করা হয়নি (লুকানো / দৃশ্যমানের মধ্যে মানগুলি কী গঠন করে? অস্বচ্ছতা? মাত্রা? এটি সুস্পষ্ট না হিসাবে, সেগুলি গণনা করা হয় না)।

opacity একটি মান সেটিং (0-1), তাই কীফ্রেমগুলি প্রদত্ত সময়কালে গণনা করা যায়।

স্থানান্তরযোগ্য (অ্যানিমেটেবল) বৈশিষ্ট্যের একটি তালিকা এখানে পাওয়া যাবে


7
dev.w3.org/csswg/css-transitions/#animtype-visibility মধ্যবর্তী মান মানচিত্রকে "দৃশ্যমান" হিসাবে নির্দিষ্ট করে।
বেনি চেরনিয়াভস্কি-পাসকিন

@ বেনিচেরনিয়াভস্কি-পাসকিন - এটি সময় নির্ধারণের কার্যকারিতার উপর নির্ভর করে:other values of the timing function (which occur only at the start/end of the transition or as a result of cubic-bezier() functions with Y values outside of [0, 1]) map to the closer endpoint
এসডাব্লু 4

4
এসডাব্লু 4 এর প্রতিক্রিয়া বিভ্রান্তিমূলক, এবং দৃশ্যমানতার উদ্দেশ্য সম্পর্কে ভুল বোঝাবুঝির ব্যাখ্যা দেয় না।
জেসিমনরোয় 650

@ জেসিমনরোয় 50৫০ - যদিও আমি খণ্ডন করতে দ্বিধা বোধ করব, দাবী করার জন্য কোনও পরিপূরক প্রমাণ না থাকলে তা করা সহজ, আপনি যদি বিশদভাবে বর্ণনা করতে পারেন তবে তা আকর্ষণীয় হবে? ওপি দৃশ্যমানতার উদ্দেশ্য জিজ্ঞাসা করছিল না (যা প্রদর্শন, অস্বচ্ছতার চেয়ে আলাদা) তবে কেন এটি সম্পত্তি হিসাবে অ্যানিমেটেড করা যায় না, কারণ কারণ হিসাবে- এটি কার্যকরভাবে একটি অন / অফ সেটিং। উত্তরটি 'দৃশ্যমানতা কী' তা মোকাবেলা করার চেষ্টা করে না তবে 'কেন এটি অ্যানিমেটেড করা যায় না'
SW4

আমরা ওপি এর অর্থ হিসাবে কাঁপতে পারি, তবে আমি পাল্টা দেব। ধ্রুবক (অসম্পূর্ণ) থিম এবং এই কাজটি করার অক্ষমতা দ্বারা বিরক্ত হয়ে আমি এটিকে তদন্ত করার সিদ্ধান্ত নিয়েছি। প্রথমে দস্তাবেজগুলি দরিদ্র মনে করার মতো ; ব্যাখ্যাগুলি দরিদ্র, স্পেকটি ভালভাবে লেখা হয়নি (সম্পাদকটির নোটও রয়েছে)। হিসাবে নথিভুক্ত করা হলেও animatableবাস্তবে এর কয়েকটি সম্পত্তি রয়েছে; সেই বৈশিষ্ট্যগুলির মধ্যে একটি সময় নির্ধারণ করা হচ্ছে । আমি শীঘ্রই ব্লগ করব।
জেসিমনরোয় 650

74

দৃশ্যমানতা অ্যানিমেটেবল। এটি সম্পর্কে এই ব্লগ পোস্টটি দেখুন: http://www.greywyvern.com/?post=337

আপনি এটি এখানেও দেখতে পাবেন: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties

ধরা যাক আপনার একটি মেনু রয়েছে যা আপনি মাউস হোভারে ফেড-ইন করতে এবং ফেইড-আউট করতে চান। আপনি যদি opacity:0কেবলমাত্র ব্যবহার করেন তবে আপনার স্বচ্ছ মেনুটি এখনও সেখানে থাকবে এবং অদৃশ্য অঞ্চলটিকে ঘুরে দেখলে এটি অ্যানিমেটেড হবে। তবে আপনি যদি যোগ করেন তবে আপনি visibility:hiddenএই সমস্যাটি দূর করতে পারেন:

div {
    width:100px;
    height:20px;
}
.menu {
    visibility:hidden;
    opacity:0;
    transition:visibility 0.3s linear,opacity 0.3s linear;
    
    background:#eee;
    width:100px;
    margin:0;
    padding:5px;
    list-style:none;
}
div:hover > .menu {
    visibility:visible;
    opacity:1;
}
<div>
  <a href="#">Open Menu</a>
  <ul class="menu">
    <li><a href="#">Item</a></li>
    <li><a href="#">Item</a></li>
    <li><a href="#">Item</a></li>
  </ul>
</div>


4
এটা সত্য নয়। নিবন্ধটি স্পষ্টভাবে দেখায়: 1: 2 উপাদানটির উপরকারীর মাউসগুলি: দৃশ্যমানতাটি দৃশ্যমান 3 তে স্যুইচ করা হবে: অস্বচ্ছতা ট্রানজিশন অ্যানিমেশন শুরু হয়
বেন র্যাকিকোট

6
এবং তবুও, নিবন্ধটি নির্ভুলভাবে অস্বচ্ছভাবে স্থানান্তরিত করে অ্যানিমেটেড দৃশ্যমানতার কার্যকরী সমতুল্য অর্জন করে। এটি একটি ভালভাবে ব্যাখ্যা করেছে যে কোনও লুকানো বস্তু যেমন "ড্রপ-ডাউন মেনু" দিয়ে "নীচে" জিনিসগুলিতে ক্লিক করতে সক্ষম হওয়ার জন্য আপনাকে এখনও কেন দৃশ্যমানতার সাথে ঝাঁকুনির প্রয়োজন। তবে স্থানীয়ভাবে স্থানীয়ভাবে উদাহরণ এবং সংক্ষিপ্তসার দিলে এই উত্তরটি আরও ভাল হবে । (লিঙ্কগুলি বিরতি; আমি সবেমাত্র একটি স্থির করে দিয়েছি))
বব স্টেইন

এই উত্তরটি কিছুটা বিভ্রান্তিকর, তবে তবুও এটি ধন্যবাদ হিসাবে কাজ করেছে!
জাটো

4
@ ববস্টাইন-ভিসিবোন আমি আমার উত্তরটি সম্পাদনা করে একটি উদাহরণ দিয়েছি। আপনার সহায়তার জন্য ধন্যবাদ :)
সেভবান üztürk

22

স্পেসিফিকেশন অনুসারে দৃশ্যমানতা একটি অ্যানিমেটেবল সম্পত্তি, তবে দৃশ্যমানতার উপর স্থানান্তরগুলি ধীরে ধীরে কাজ করে না, কারণ কেউ আশা করতে পারে। পরিবর্তে কোনও উপাদান লুকিয়ে থাকা দৃশ্যমানতার বিলম্বের উপর স্থানান্তর। অন্যদিকে একটি উপাদান দৃশ্যমান করা অবিলম্বে কাজ করে। এটি যেমন স্পেক দ্বারা সংজ্ঞায়িত হয় (ডিফল্ট সময় কার্যের ক্ষেত্রে) এবং এটি ব্রাউজারগুলিতে প্রয়োগ করা হয় তেমনি।

এটিও একটি দরকারী আচরণ, যেহেতু আসলে কোনও উপাদান লুকিয়ে রাখতে বিভিন্ন ভিজ্যুয়াল এফেক্টগুলি কল্পনা করতে পারে। কোনও উপাদান ফাইড হওয়া কেবল এক ধরণের ভিজ্যুয়াল এফেক্ট যা ধূমপান ব্যবহার করে নির্দিষ্ট করা হয়। অন্যান্য ভিজ্যুয়াল এফেক্টগুলি রূপান্তর সম্পত্তি হিসাবে যেমন উপাদানটি সরিয়ে ফেলতে পারে, এছাড়াও http://taccgl.org/blog/css-transition-visibility.html দেখুন

এটি দৃশ্যমানতার পরিবর্তনের সাথে অস্বচ্ছভাবে রূপান্তরটি একত্রিত করতে প্রায়শই কার্যকর! যদিও অস্বচ্ছতা সঠিক কাজটি করে বলে মনে হচ্ছে, সম্পূর্ণ স্বচ্ছ উপাদানগুলি (অস্বচ্ছতা: 0) এখনও মাউস ইভেন্টগুলি গ্রহণ করে। সুতরাং উদাহরণস্বরূপ এমন কোনও উপাদানের লিঙ্কগুলি যা কেবল অস্বচ্ছ রূপান্তর দ্বারা বিবর্ণ হয়ে গিয়েছিল, এখনও ক্লিকগুলিতে সাড়া দেয় (যদিও দৃশ্যমান নয়) এবং বিবর্ণ উপাদানটির পিছনে লিঙ্কগুলি কাজ করে না (যদিও বিবর্ণ উপাদানটির মাধ্যমে দৃশ্যমান হচ্ছে)। Http://taccgl.org/blog/css-transition-opacity-for-fade-effects.html দেখুন ।

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

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