দৃশ্যমানতার মধ্যে পার্থক্য কী: লুকানো এবং প্রদর্শন: কিছুই নয়?


1173

সিএসএস বিধি visibility:hiddenএবং display:noneউভয় ফলাফল উপাদানটি দৃশ্যমান নয়। এই প্রতিশব্দগুলি হয়?

উত্তর:


1475

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

visibility:hiddenএর অর্থ এই নয় যে display:none, ট্যাগটি দৃশ্যমান নয়, তবে পৃষ্ঠার জন্য স্থান বরাদ্দ করা হয়েছে। ট্যাগটি রেন্ডার করা হয়েছে, এটি কেবল পৃষ্ঠায় দেখা যায় না।

উদাহরণ স্বরূপ:

test | <span style="[style-tag-value]">Appropriate style in this tag</span> | test

ফলাফলগুলির [style-tag-value]সাথে প্রতিস্থাপন করা হচ্ছে display:none:

test |   | test

ফলাফলগুলির [style-tag-value]সাথে প্রতিস্থাপন করা হচ্ছে visibility:hidden:

test |                        | test

14
একে অপরের অভিনয় নিয়ে কোনও মন্তব্য নেই? আমি উত্সাহী যে একেবারে অবস্থানগত উপাদানগুলি লুকিয়ে রাখার জন্য কোন পদ্ধতিটি ব্যবহার করতে হবে যা প্রায়শই প্রদর্শিত হয় এবং লুকানো থাকে।
টম্যা জ্যাটো - মনিকা

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

13
@Kevin যে সঠিক visibility: hiddenএবং display: noneরং এবং যৌগিক সমানভাবে যেহেতু তারা উভয় retrigger বিন্যাস performant করা হবে। যাইহোক, opacity: 0কার্যকরীভাবে visibility: hiddenলেআউট পদক্ষেপের সমতুল্য এবং পুনরুদ্ধার করে না, তাই আমি আপনাকে এটি ব্যবহার করার পরামর্শ দিচ্ছি যদি আপনি খালি স্থানটি এখনও বরাদ্দ করা হয় না (অন্যথায় ব্যবহার করুন display: none)।
জয়রোবিন

76
প্রদর্শনের বনাম প্রদর্শন সম্পর্কে কথা বলার সময় সিএসএস-ট্রানজিশনগুলি মাথায় রাখা গুরুত্বপূর্ণ। উদাহরণস্বরূপ, দৃশ্যমানতা থেকে টগলিং: লুকানো; দৃশ্যমানতা: দৃশ্যমান; সিএসএস-ট্রানজিশনগুলি ব্যবহার করার অনুমতি দেয়, যেখানে প্রদর্শন থেকে টগলিং: কিছুই নয়; to প্রদর্শন: ব্লক; না. দৃশ্যমানতা: গোপনে জাভাস্ক্রিপ্ট ইভেন্টগুলি ক্যাপচার না করার অতিরিক্ত সুবিধা রয়েছে, যেখানে অস্বচ্ছতা: 0; ঘটনা ক্যাপচার।
মাইকেল ডিল

9
opacity: 0ইনপুট বা বোতামগুলির সাথে ডিল করার সময় সাবধানতার সাথে ব্যবহার করা উচিত, কারণ এগুলি এখনও বিদ্যমান থাকবে এবং সম্ভবত অদ্ভুত ব্যবহারকারীর ইন্টারঅ্যাকশন ঘটায়।
জ্যাকস মোয়েট

233

এগুলি প্রতিশব্দ নয়।

display:none পৃষ্ঠার স্বাভাবিক প্রবাহ থেকে উপাদানটি সরিয়ে দেয়, অন্যান্য উপাদানগুলিকে পূরণ করতে দেয়।

visibility:hidden পৃষ্ঠার স্বাভাবিক প্রবাহে উপাদানটিকে এমনভাবে ছেড়ে দেয় যা এখনও স্থান দখল করে।

কল্পনা করুন যে আপনি একটি বিনোদন পার্কে যাত্রার জন্য সারিবদ্ধ আছেন এবং লাইনের কেউ এতটাই দুষ্কর হয়ে পড়েছে যে সুরক্ষা তাদের লাইন থেকে তুলে নিয়ে যায়। লাইনে থাকা প্রত্যেকে এখন খালি স্লটটি পূরণের জন্য একটি অবস্থানের দিকে এগিয়ে যাবে। এই মত display:none

এটি একইরকম পরিস্থিতির সাথে বৈষম্য করুন, তবে আপনার সামনে কেউ অদৃশ্যতার পোশাকটি রাখে। লাইনটি দেখার সময় দেখে মনে হবে একটি খালি জায়গা আছে তবে লোকেরা সত্যই সেই শূন্য স্থানটি পূরণ করতে পারে না কারণ কেউ এখনও রয়েছেন। এই মত visibility:hidden


3
তাদের মধ্যে আরও একটি বড় পার্থক্য রয়েছে: কমপক্ষে ক্রোমে, দৃশ্যমানতাটি স্থানান্তর-বিলম্বের সাথে ব্যবহার করা যেতে পারে তবে প্রদর্শন এটিকে উপেক্ষা করে।
নীলাশুন

1
ব্যাখ্যা করার মজার উপায়, তবে আকর্ষণীয়। :)
ইলেঙ্গো পল ভিক্টর

107

যোগ করার মতো একটি বিষয়, যদিও এটি জিজ্ঞাসা করা হয়নি, তা হ'ল বস্তুটিকে সম্পূর্ণ স্বচ্ছ করার তৃতীয় বিকল্প রয়েছে। বিবেচনা:

1st <a href="http://example.com" style="display: none;">unseen</a> link.<br />
2nd <a href="http://example.com" style="visibility: hidden;">unseen</a> link.<br />
3rd <a href="http://example.com" style="opacity: 0;">unseen</a> link.

(ফলাফলটি দেখতে উপরের "কোড কোড স্নিপেট" ক্লিক করতে ভুলবেন না))

1 এবং 2 এর মধ্যে পার্থক্য ইতিমধ্যে চিহ্নিত করা হয়েছে (যথা, 2 এখনও স্থান গ্রহণ করে)। তবে, 2 এবং 3 এর মধ্যে পার্থক্য রয়েছে: 3 ক্ষেত্রে, লিঙ্কটি ওভার করার সময় মাউসটি তখনও হাতের কাছে চলে যাবে এবং ব্যবহারকারী এখনও লিঙ্কটিতে ক্লিক করতে পারেন, এবং জাভাস্ক্রিপ্ট ইভেন্টগুলি এখনও সেই লিঙ্কটিতে জ্বলতে থাকবে। এটি সাধারণত আপনি চান এমন আচরণ নয় (তবে কখনও কখনও এটি হয়?)।

আর একটি পার্থক্য হ'ল যদি আপনি পাঠ্যটি নির্বাচন করেন, তবে সরল পাঠ্য হিসাবে অনুলিপি / পেস্ট করুন, আপনি নিম্নলিখিতটি পান:

1st link.
2nd  link.
3rd unseen link.

ক্ষেত্রে 3 টেক্সট অনুলিপি করা হয়। হতে পারে এটি কোনও ধরণের ওয়াটারমার্কিংয়ের জন্য দরকারী, বা যদি আপনি এমন কোনও কপিরাইট নোটিশ লুকিয়ে রাখতে চান যা অযত্নে ব্যবহারকারী আপনার সামগ্রী অনুলিপি / পেস্ট করে তবে তা প্রদর্শিত হবে?


@ গ্রীনল্ডম্যান আপনি একটি উদাহরণ দিতে পারেন? এখানে একটি জসফিডাল যেখানে একটি লুকানো উপাদান (আমি ডিভ এবং স্প্যান চেষ্টা করেছি) যা তার ধারকটির
কিপ

@ কিপ, অদ্ভুত - আমি এখন এটি করতে পারি না (এবং আমি নিজের প্রকল্পটিও পরিবর্তন করেছি)। ঠিক আছে, আমি আমার আগের মন্তব্যটি আরও ভাল করে সরিয়ে ফেলতে পারি এবং যখন আমার দৃ test় টেস্টকেস থাকে তখন আমি তা প্রদর্শন করব, গোলমালের জন্য দুঃখিত।
গ্রীনল্ডম্যান

89

display:none বিন্যাস প্রবাহ থেকে উপাদানটি সরিয়ে দেয়।

visibility:hidden এটি লুকায় তবে স্থান ছেড়ে দেয়।


70

শিশু নোডের ক্ষেত্রে এটির মধ্যে একটি বড় পার্থক্য রয়েছে। উদাহরণস্বরূপ: আপনার পিতা বা মাতা ডিভ এবং নেস্টেড শিশু ডিভ থাকলে। সুতরাং আপনি যদি এইভাবে লিখুন:

<div id="parent" style="display:none;">
    <div id="child" style="display:block;"></div>
</div>

এক্ষেত্রে ডিভগুলির কোনওটিই দৃশ্যমান হবে না। তবে আপনি যদি এইভাবে লিখেন:

<div id="parent" style="visibility:hidden;">
    <div id="child" style="visibility:visible;"></div>
</div>

তারপরে শিশু ডিভ দৃশ্যমান হবে যেখানে পিতামাতার ডিভ প্রদর্শিত হবে না।


ভাল কথা, এটি সহজেই মিস করা যেতে পারে। প্রদর্শন: কোনওটি / ব্লক স্থানান্তরকে ট্রিগার করবে না, সুতরাং দৃশ্যমানতা ব্যবহার করে: লুকানো কাজ করতে পারে, তবে শিশু উপাদানগুলিরও স্বচ্ছলতা প্রয়োজন: একই সময়ে লুকানো
ড্রেনাই

18

এগুলি প্রতিশব্দ নয় - display: none পৃষ্ঠার প্রবাহ থেকে উপাদানটি সরিয়ে দেয় এবং বাকী পৃষ্ঠাটি প্রবাহিত করে যেন এটি সেখানে নেই।

visibility: hidden পৃষ্ঠায় এর জন্য স্থান রেখে পৃষ্ঠার প্রবাহ নয়, উপাদান থেকে উপাদানটি লুকায়।


15

display: none পৃষ্ঠাটি উপাদানটি সম্পূর্ণরূপে সরিয়ে দেয় এবং পৃষ্ঠাটি এমনভাবে তৈরি করা হয়েছে যেন উপাদানটি একেবারেই ছিল না।

Visibility: hidden আপনি আর এটি দেখতে না পেয়েও নথির প্রবাহে স্থান রেখে দেয়।

আপনি যা করছেন তার উপর নির্ভর করে এটি একটি বড় পার্থক্য করতে পারে বা নাও পারে।


$ ('# উপাদান') ব্যবহার করে অপসারণ () পুরোপুরি উপাদানটি পৃষ্ঠা (ডিওএম) থেকে সরিয়ে দেয়। এটি প্রদর্শিত না করা বা স্থান ব্যবহার না করার অর্থ এটি সরিয়ে ফেলার অর্থ নয়। আপনি এখনও একটি সাধারণ '(' # উপাদান ') দিয়ে এর স্থিতি পরিবর্তন করতে পারেন show (দেখান), সুতরাং এটি "সম্পূর্ণরূপে সরানো হয়নি"।
শিয়াল

11

সঙ্গে visibility:hiddenসে আপত্তি এখনও পৃষ্ঠাতে উল্লম্ব উচ্চতা লাগে। সঙ্গে display:noneএটি সম্পূর্ণ মুছে ফেলা হবে। আপনার যদি কোনও চিত্রের নীচে পাঠ্য থাকে এবং আপনি এটি করেন তবে display:noneসেই পাঠ্যটি চিত্রটি স্থানটি পূরণ করার জন্য স্থানান্তরিত হবে। আপনি যদি দৃশ্যমানতাটি করেন: লুকানো পাঠ্য একই জায়গায় থাকবে।


লুকানো সহ, সংরক্ষিত স্থানটি কেবল উল্লম্ব মাত্রা। অনুভূমিকভাবে কী হবে?
ক্রিস নয়ে

2
অনুভূমিক মাত্রা পাশাপাশি সংরক্ষণ করা হয়।
জেবি হুরটেক্স

9

display:noneউপাদানটি আড়াল করে ফেলবে এবং স্থানটি ধসে visibility:hiddenপড়বে , যেখানে উপাদানটি লুকিয়ে থাকবে এবং উপাদানগুলির স্থান সংরক্ষণ করবে। প্রদর্শন: IE এবং সাফারির পুরানো সংস্করণগুলিতে জাভাস্ক্রিপ্ট থেকে প্রাপ্ত কয়েকটি বৈশিষ্ট্যকেও প্রভাবিত করে না।


7

অন্যান্য সমস্ত উত্তর ছাড়াও, আইই 8 এর জন্য একটি গুরুত্বপূর্ণ পার্থক্য রয়েছে: আপনি যদি display:noneউপাদানটির প্রস্থ বা উচ্চতা ব্যবহার করতে এবং চেষ্টা করার চেষ্টা করেন তবে আই 88 0 দেয় (অন্য ব্রাউজারগুলি প্রকৃত আকারগুলি ফিরিয়ে দেবে)। আইই 8 কেবল সঠিক প্রস্থ বা উচ্চতা প্রদান করে visibility:hidden



6
display: none; 

এটি পৃষ্ঠায় উপলব্ধ হবে না এবং কোনও স্থান দখল করবে না।

visibility: hidden; 

এটি একটি উপাদান লুকিয়ে রাখে, তবে এটি এখনও আগের মতো স্থান গ্রহণ করবে। উপাদানটি লুকানো থাকবে তবে তবুও লেআউটটিকে প্রভাবিত করবে।

visibility: hiddenস্থান সংরক্ষণ করুন, যেখানে স্থান সংরক্ষণ display: noneকরে না।

কোনওটির উদাহরণ প্রদর্শন করুন না: https://www.w3schools.com/css/tryit.asp?filename=trycss_display_none

দৃশ্যমানতার গোপন উদাহরণ: https://www.w3schools.com/cssref/tryit.asp?filename=trycss_visibility


আমি ওয়েবসাইটটিতে জ্ঞাত ভুলগুলির কারণে ডব্লু 3 স্কুলগুলিতে লিঙ্ক দেওয়ার বিরুদ্ধে পরামর্শ দেব।
স্কেয়ার

5

যদি দৃশ্যমানতার বৈশিষ্ট্য সেট করা থাকে "hidden"তবে ব্রাউজারটি অদৃশ্য হওয়া সত্ত্বেও সামগ্রীতে পৃষ্ঠায় স্থান নেবে।
কিন্তু যখন আমরা কোনও বস্তু সেট করি তখন "display:none"ব্রাউজারটি তার সামগ্রীর জন্য পৃষ্ঠায় স্থান বরাদ্দ দেয় না।

উদাহরণ:

<div style="display:none">
Content not display on screen and even space not taken.
</div>

<div style="visibility:hidden">
Content not display on screen but it will take space on screen.
</div>

বিস্তারিত দেখুন


4

visibility:hidden পৃষ্ঠায় উপাদানটি রাখবে এবং সেই স্থানটি দখল করবে কিন্তু ব্যবহারকারীর কাছে প্রদর্শিত হবে না।

display:none পৃষ্ঠায় উপলব্ধ হবে না এবং কোন স্থান দখল করবে না।



2

পার্থক্যটি শৈলীর বাইরে চলে যায় এবং জাভাস্ক্রিপ্টের সাথে ম্যানিপুলেট করার সময় উপাদানগুলি কীভাবে আচরণ করে তা প্রতিফলিত হয়।

এর প্রভাব এবং পার্শ্ব প্রতিক্রিয়া display: none:

  • লক্ষ্য উপাদানটি দস্তাবেজের প্রবাহের বাইরে নেওয়া হয় (অন্যান্য উপাদানগুলির বিন্যাসকে প্রভাবিত করে না);
  • সমস্ত বংশধর প্রভাবিত হয় (হয় না প্রদর্শিত হয় এবং এই উত্তরাধিকারের "স্নাপ আউট" করতে পারে না);
  • পরিমাপ লক্ষ্য উপাদানের জন্য না এর উত্তরপুরূষ জন্য তৈরি করা যাবে না - তারা, এইভাবে সব সময়ে অনুষ্ঠিত নেই তাদের clientWidth, clientHeight, offsetWidth, offsetHeight, scrollWidth, scrollHeight, getBoundingClientRect(), getComputedStyle(), সমস্ত রিটার্ন 0গুলি।

এর প্রভাব এবং পার্শ্ব প্রতিক্রিয়া visibility: hidden:

  • লক্ষ্য উপাদানটি দৃশ্য থেকে লুকানো থাকে তবে প্রবাহের বাইরে নেওয়া হয় না এবং লেআউটকে প্রভাবিত করে, এর স্বাভাবিক স্থান দখল করে;
  • innerText(তবে নয় innerHTML) লক্ষ্য উপাদানটির এবং বংশধরদের খালি স্ট্রিং ফিরে আসে।

1

display:none;পৃষ্ঠায় visibility:hidden;উপাদানটি প্রদর্শন করবে না তবে পৃষ্ঠায় স্থান বরাদ্দ করবে সেখানে পৃষ্ঠায় উপাদানটি প্রদর্শন করা হবে না বা এটি উপাদানটির জন্য স্থান বরাদ্দ করবে না। আমরা উভয় ক্ষেত্রেই ডিওমে থাকা উপাদানটি অ্যাক্সেস করতে পারি। এটি আরও ভাল উপায়ে বুঝতে দয়া করে নীচের কোডটি দেখুন: প্রদর্শন: কোনওটি বনাম দৃশ্যমানতা: লুকানো


0

এখানে প্রচুর বিশদ উত্তর রয়েছে, তবে আমি ভেবেছিলাম যে অ্যাক্সেসিবিলিটি সম্বোধন করার জন্য আমার এটি যুক্ত করা উচিত since

display: none; এবং visibility: hidden; সমস্ত স্ক্রিন রিডার সফ্টওয়্যার দ্বারা না পঠিত হতে পারে। দৃষ্টি-প্রতিবন্ধী ব্যবহারকারীরা কী অভিজ্ঞতা নেবেন তা মাথায় রাখুন।

প্রশ্নটি প্রতিশব্দ সম্পর্কেও জিজ্ঞাসা করে। text-indent: -9999px;অন্য এক যে মোটামুটি সমতুল্য। এর সাথে গুরুত্বপূর্ণ পার্থক্যটি text-indentহ'ল এটি প্রায়শই পর্দার পাঠকরা পড়বেন। এটি কিছুটা খারাপ অভিজ্ঞতা হতে পারে কারণ ব্যবহারকারীরা এখনও লিঙ্কটিতে ট্যাব করতে পারেন।

অ্যাক্সেসযোগ্যতার জন্য, আমি আজ যা ব্যবহার করছি তা হ'ল স্ক্রিন পাঠকদের কাছে দৃশ্যমান থাকা অবস্থায় কোনও উপাদান লুকানোর জন্য শৈলীর সংমিশ্রণ।

{
  clip: rect(1px, 1px, 1px, 1px);
  clip-path: inset(50%);
  height: 1px;
  width: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
}

একটি দুর্দান্ত অনুশীলন হ'ল বিষয়বস্তুর মূল অংশের অ্যাঙ্কারের সাথে "সামগ্রীতে যান" লিঙ্ক তৈরি করা। দৃষ্টি প্রতিবন্ধী ব্যবহারকারীরা সম্ভবত প্রতি একক পৃষ্ঠায় আপনার সম্পূর্ণ নেভিগেশন ট্রি শুনতে চান না। লিঙ্কটি দৃষ্টিগোচর করুন। ব্যবহারকারীরা লিঙ্কটি অ্যাক্সেস করতে কেবল ট্যাবটিতে আঘাত করতে পারেন।

অ্যাক্সেসযোগ্যতা এবং লুকানো সামগ্রী সম্পর্কে আরও জানতে, দেখুন:

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