অন্যান্য এইচটিএমএলের সাথে <body>> এ <স্টাইল> ট্যাগ ব্যবহার করা


195
<html>
  <body>
    <style type="text/css">
      p.first {color:blue}
      p.second {color:green}
    </style>

    <p class="first">Hello World</p>
    <p class="second">Hello World</p>

    <style type="text/css">
      p.first {color:green}
      p.second {color:blue}
    </style>

    <p class="first">Hello World</p>
    <p class="second">Hello World</p>
  </body>
</html>

কীভাবে ব্রাউজারের সিএসএস রেন্ডার করার কথা হয় যা অবিসংবাদযুক্ত? কোনও পৃষ্ঠায় সমস্ত CSS শৈলী ব্যবহার করে কোনও ডেটা স্ট্রাকচার তৈরি করার এবং রেন্ডারিংয়ের জন্য এটি ব্যবহার করার কথা কি?

অথবা এটি শৃঙ্খলা সম্পর্কিত তথ্যটি দেখতে ক্রমে ব্যবহার করে রেন্ডার করে?


2
আমি বলব এটি বৈধ এইচটিএমএল না হওয়ায় এটি পূর্বনির্ধারিত আচরণ। : আরও তথ্য যা উপাদান বৈধ এবং যা নও en.wikipedia.org/wiki/HTML_element
ফেলিক্স Kling

2
এই সমস্যাটিকে একপাশে রেখে, এটি মিশ্রিত করা CSSএবং একটি খারাপ অভ্যাস HTML
0x2D9A3

1
@ 0x2D9A3 অগত্যা সত্য নয়। <head>ট্যাগে সংজ্ঞায়িত সিএসএসের চেয়ে বাহ্যিক সিএসএস পৃষ্ঠার অনুরোধ করতে বেশি সময় লাগে
কলব ক্যানিয়ন

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

3
@ কলবক্যানিয়ন, এটি কোনও পৃথক ফাইলে থাকা উচিত কিনা তা কোনও সমস্যা নয়। এই ক্ষেত্রে প্রশ্নে সিএসএস সম্পর্কে <body>পরিবর্তে <head>
রে বাটারওয়ার্থ

উত্তর:


312

যেমন অন্যরা ইতিমধ্যে উল্লেখ করেছেন, এইচটিএমএল 4 <style>এর <head>বিভাগটি বিভাগে রাখার প্রয়োজন হয় (যদিও বেশিরভাগ ব্রাউজারগুলি এর <style>মধ্যে ট্যাগগুলির অনুমতি দেয় body)।

তবে, এইচটিএমএল 5 এ scopedঅ্যাট্রিবিউটটি অন্তর্ভুক্ত রয়েছে (নীচে আপডেট দেখুন), যা আপনাকে স্টাইল শিটগুলি তৈরি করতে দেয় যা <style>ট্যাগের মূল উপাদানগুলির মধ্যে রয়েছে sc এটি আপনাকে উপাদানটির <style>মধ্যে ট্যাগ রাখতে সক্ষম করে <body>:

<!DOCTYPE html>
<html>
<head></head>
<body>

<div id="scoped-content">
    <style type="text/css" scoped>
        h1 { color: red; } 
    </style>

    <h1>Hello</h1>
</div>

    <h1>
      World
    </h1>

</body>
</html>

যদি আপনি এইচটিএমএল -5 সক্ষম ব্রাউজারকে সমর্থন করে যা উপরের কোডটি সরবরাহ করে scoped, আপনি স্টাইল শীটের সীমিত সুযোগ দেখতে পাবেন।

এখানে কেবল একটি বড় ক্যাভিয়েট ...

আমি এই উত্তরটি লিখছি (মে, ২০১৩) প্রায় কোনও মূলধারার ব্রাউজার বর্তমানে বৈশিষ্টটিকে সমর্থন করে না scoped। (যদিও স্পষ্টত বিকাশকারী ক্রোমিয়াম তৈরি করে এটি সমর্থন করে))

তবুও, scopedএই প্রশ্নের সাথে সম্পর্কিত বৈশিষ্ট্যের একটি আকর্ষণীয় জড়িত রয়েছে । এর অর্থ হ'ল ভবিষ্যতের ব্রাউজারগুলিকে (যতক্ষণ না লম্বা হিসাবে <style>উপাদানগুলির মধ্যে মঞ্জুরি দেওয়ার জন্য স্ট্যান্ডার্ডের মাধ্যমে বাধ্যতামূলক <body>করা হয়)<style> উপাদানগুলিকে বাদ দেওয়া হয়))

সুতরাং, যে দেওয়া:

  • প্রায় প্রতিটি বিদ্যমান ব্রাউজার বর্তমানে উপেক্ষা করে scoped বৈশিষ্ট্যটিকে
  • প্রায় প্রতিটি বিদ্যমান ব্রাউজার বর্তমানে অনুমতি দেয় <style> মধ্যে ট্যাগ<body>
  • ভবিষ্যতের বাস্তবায়নের অনুমতি দেওয়ার প্রয়োজন হবে (স্কোপড) <style> মধ্যে এর মধ্যে ট্যাগগুলিকে<body>

... তারপরে শরীরে ট্যাগ রাখার ক্ষেত্রে আক্ষরিক কোনও ক্ষতি নেই * <style>যতক্ষণ না আপনি ভবিষ্যতে কোনও scopedগুণ দিয়ে প্রমাণ করেন । একমাত্র সমস্যা হ'ল বর্তমান ব্রাউজারগুলি আসলে স্টাইলশিটের সুযোগ সীমাবদ্ধ করে না - তারা এটি পুরো নথিতে প্রয়োগ করবে। তবে মুল বক্তব্যটি হ'ল, সমস্ত ব্যবহারিক উদ্দেশ্যে আপনি প্রদত্ত যে ট্যাগগুলির মধ্যে ট্যাগ অন্তর্ভুক্ত করতে পারেন :<style><body>

  • ফিউচার-প্রুফ scopedবৈশিষ্ট্যটি অন্তর্ভুক্ত করে আপনার এইচটিএমএল
  • বুঝতে হবে যে এখনকার মতো, স্টাইলশীটটি <body>আসলে বাদ দেওয়া হবে না (কারণ কোনও মূলধারার ব্রাউজার সমর্থন এখনও বিদ্যমান নেই)


* অবশ্যই, এইচটিএমএল যাচাইকারীদের বন্ধ করার জন্য ...


অবশেষে, সাধারণ (তবে বিষয়ী) বলে যে দাবি করা এইচটিএমএল মধ্যে সিএসএস এম্বেডিং দরিদ্র অভ্যাস সংক্রান্ত, এটা উল্লেখ করা উচিত যে পুরো পয়েন্ট এর scopedঅ্যাট্রিবিউট টিপিক্যাল আধুনিক উন্নয়নের অবকাঠামো যে মডিউল বা সিন্ডিকেটেড সামগ্রী হিসাবে HTML- এর আমদানি খন্ডে ডেভেলপারদের অনুমতি মিটমাট হয় । এম্বেড করা সিএসএস যে আছে খুব সুবিধাজনক শুধুমাত্র HTML- এর একটি নির্দিষ্ট খণ্ড প্রযোজ্য, অর্ডার encapsulated, নির্দিষ্ট stylings সঙ্গে মডুলার উপাদান বিকাশ হবে।


ফেব্রুয়ারী 2019 অনুসারে আপডেট করুন, মজিলা ডকুমেন্টেশন অনুসারে , scopedগুণটি হ্রাস করা হয়েছে। ক্রোম এটি 36 (2014) সংস্করণ এবং ফায়ারফক্স 62 (2018) সংস্করণে সমর্থন করা বন্ধ করে দিয়েছে। উভয় ক্ষেত্রেই বৈশিষ্ট্যটি ব্রাউজারগুলির সেটিংসে ব্যবহারকারীকে স্পষ্টভাবে সক্ষম করতে হয়েছিল। অন্য কোনও বড় ব্রাউজার এটি সমর্থন করে নি।


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

4
আজকের হিসাবে, কেবল ফায়ারফক্স স্কোপড শৈলীর উপাদান সমর্থন করে ( ক্যানিউজ . com/#feat=style- স্কোপ অনুযায়ী )। এবং যেহেতু সাধারণ ব্রাউজারগুলি কেবল দেহের অভ্যন্তরে স্টাইল উপাদানটিকে সমর্থন করে, প্রয়োজনে আমি কেবল এটি ব্যবহার করব। সিএসএস যদি কোনও স্কোপে প্রয়োগ করা উচিত, তবে আপনি কেবলমাত্র সিএসএস উত্সের প্রতিটি নির্বাচককে একটি র‍্যাপারের আইডি / শ্রেণি দিয়ে প্রিফিক্স করতে পারেন। আমি আসলে এমন একটি ওয়েব অ্যাপ্লিকেশনে এটি করেছি যা এইচটিএমএল রিপোর্টগুলি সার্ভার-সাইড লোড করে এবং এজেএক্সের মাধ্যমে তাদের রেন্ডার করে। সিএসএস এর পরে জাভাস্ক্রিপ্টে সরল রেজেেক্স সহ উপসর্গ করা যেতে পারে: cssString.replace (/ ((^ | \})) ([^ {] +) (\ {) / জি, '$ 1' + উপসর্গ + '$ 2 $ 3')
অ্যাডাম Hošek

5
এর জন্য সমর্থন @scoped, বা scopedমারা যাচ্ছে বলে মনে হচ্ছে: এখানে এবং এখানে
কিরণ সুব্বারমন

51
@ কিরানসুবারামানকে সমর্থন করছেন: আমি সবেমাত্র (জুলাই ২০১ 2016) মজিলা দেবের উপর পড়েছি: " ক্রোপ এবং ফায়ারফক্সের দ্বারা সীমাবদ্ধ এবং পরীক্ষামূলকভাবে গ্রহণের পরে স্কোপড বৈশিষ্ট্যটি নির্দিষ্টকরণ থেকে সরিয়ে দেওয়া হয়েছেআপনার এটি ব্যবহার করা এড়ানো উচিত , কারণ এটি প্রায় অবশ্যই হবে শীঘ্রই এই ব্রাউজারগুলি থেকে সরানো হয়েছে। >> বিকাশকারী.মোজিলা.আর.ইন-
ইউএস

9
scopedঅ্যাট্রিবিউট বর্তমান HTML5 এর স্পেসিফিকেশনের থেকে সরিয়ে দেওয়া হয়েছে।
অ্যালবার্ট ওয়েয়ার্সচ

61

সাম্প্রতিক দুঃসংবাদ জন্য "শৈলী শরীরে" প্রেমীদের: W3C এর সম্প্রতি করেনি এইচটিএমএল যুদ্ধে হেরে WHATWG, যার versionless এইচটিএমএল "জীবনযাত্রার মান" বিরুদ্ধে এখন পরিণত হয়েছে অফিসিয়াল, যা, হায়, নেই না অনুমতি দেয় STYLE মধ্যে BODY। স্বল্পকালীন সুখের দিন শেষ। ;) ডাব্লু 3 সি বৈধকারক এখন WHATWG স্পেস দ্বারা কাজ করে G (শীর্ষস্থানীয় হওয়ার জন্য @ ফ্র্যাঙ্ককনিজনকে ধন্যবাদ!)

(দ্রষ্টব্য: এটি "আজকের মতো", তবে যেহেতু কোনও সংস্করণ নেই, লিঙ্কগুলি নোটিশ বা নিয়ন্ত্রণ ছাড়াই যে কোনও মুহুর্তে অবৈধ হয়ে উঠতে পারে Un আপনি যদি গিটহাবের নিজস্ব উত্সের সাথে লিঙ্ক করতে রাজি না হন তবে আপনি মূলত এটি করতে পারবেন না নতুন অফিসিয়াল এইচটিএমএল স্ট্যান্ডার্ড , এএফআইএকে আরও দীর্ঘস্থায়ী রেফারেন্স করুন this দয়া করে আমাকে এটি সংশোধন করুন যদি সঠিকভাবে এটি করার কোনও সাধারণ উপায় নেই way)

অসমাপ্ত সুসংবাদ:

হ্যাঁ, STYLEশেষ পর্যন্ত বৈধ BODY, HTML5.2 হিসাবে! (এবং scopedচলে গেছে,)

থেকে W3C এর চশমা ( শেষ লাইনটি সুস্বাদ! ):

4.2.6। শৈলী উপাদান

...

প্রসঙ্গগুলিতে এই উপাদানটি ব্যবহার করা যেতে পারে:

যেখানে মেটাডেটা সামগ্রী আশা করা যায়।

একটি নসক্রিপ্ট উপাদানের মধ্যে যা প্রধান উপাদানগুলির একটি শিশু।

শরীরে, যেখানে প্রবাহের সামগ্রী প্রত্যাশিত।


মিতা পার্শ্ব-নোট:

"ব্রাউজার যুদ্ধ" এর ক্ষয়ক্ষতি সত্ত্বেও আমাদের এখনও দুটি হাস্যকরভাবে প্রতিযোগিতামূলক "অফিসিয়াল" এইচটিএমএল "মান" (এর উদ্ধৃতি 1 standard + 1 standard < 1 standard) এর বিরুদ্ধে বজায় রাখতে হয়েছিল "এর অর্থ" অভ্যন্তরীণ সাধারণ জ্ঞানের প্রতিবন্ধকতা " ওয়েব বিকাশ সত্যিই প্রয়োগ করা বন্ধ করে দেয় না।

এটি শেষ পর্যন্ত এখন পরিবর্তিত হতে পারে, তবে প্রচলিত জ্ঞানের উদ্ধৃতি দিয়ে: ওয়েব লেখক / বিকাশকারী এবং ফলস্বরূপ, ব্রাউজারগুলি শেষ পর্যন্ত সিদ্ধান্ত নিতে হবে স্পেসিফিকেশনগুলিতে কী হওয়া উচিত (এবং না হওয়া উচিত), যখন ইতিমধ্যে যা করা হয়েছে তার বিরুদ্ধে কোনও ভাল কারণ নেই when বাস্তবতা। এবং বেশিরভাগ ব্রাউজারগুলি দীর্ঘকাল ধরে সমর্থন STYLEকরেছে BODY(এক উপায়ে বা অন্যভাবে; উদাহরণস্বরূপ scopedএট্রি দেখুন )) যদিও এর অন্তর্নিহিত পারফরম্যান্স (এবং সম্ভবত অন্যান্য) জরিমানা সত্ত্বেও (যা আমাদের চাঁদা দেওয়ার বা না দেওয়ার সিদ্ধান্ত নিতে হবে)। সুতরাং, একটির জন্য, আমি তাদের উপর বাজি রেখে চলেছি, এবং আশা ছাড়ব না। ;) যদি WHATWG এর বাস্তবতা / লেখকদের দাবি অনুসারে একই শ্রদ্ধা থাকে তবে তারা ডব্লু 3 সি যা করেছে তা এখানেই শেষ করতে পারে।


3
আমি চশমা পড়ি, কিন্তু বুঝতে পারি না। আপনি যা যাচাই styleকরে bodyতাতে কোনও ব্লকের উদাহরণ কোড দিতে পারেন ?
ফ্রাঙ্ক কনিজন

3
@ ফ্র্যাঙ্ককনিজন: ভালো কথা, বিষয় বদলেছে, উত্তর আপডেট করেছে! এটা সত্যিই বিভ্রান্তিকর। 5.2 এবং 5.3 ডাব্লু 3 সি স্পেস উভয়ই STYLEমেটাডেটা এবং প্রবাহের সামগ্রী হিসাবে বিবেচনা করে তবে সর্বশেষ WHATWG "জীবিত" স্পেক পুরানো, বোরিং "মেটাডেটা কেবল" গল্পটি (এটি কেবলমাত্র হেডে অনুমতি দেয়) বলে দেয়। এবং, চোটে অপমান যুক্ত করার জন্য, ডাব্লু 3 সি বৈধকারক WHATWG স্বাদ অনুসরণ করে বলে মনে হচ্ছে। আমি হাসি বা কাঁদতে হবে কিনা তা এখনও স্থির করি নি, তবে ব্যক্তিগতভাবে "ব্রাউজার + ডাব্লু 3 সি - ভ্যালিডেটর" কেসটি দিয়ে "ভুল" করার এবং দেহে স্টাইলকে অনুমতি দেওয়ার সিদ্ধান্ত নিয়েছি। (বিটিডাব্লু, ভুলে যাবেন না: আমাদের স্ট্যান্ডার্ডের চূড়ান্ত উত্স হওয়া উচিত , প্রকৃতপক্ষে))
এসজেড।

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

32

যখন আমি দেখি যে বড় সাইটের কন্টেন্ট ম্যানেজমেন্ট সিস্টেমগুলি নিয়মিতভাবে এই শ্রেণীর উপর নির্ভর করে এমন কিছু <স্টাইল> উপাদান (কিছু না, সমস্ত নয়) কাছে রাখে, আমি সিদ্ধান্তে পৌঁছে যাই যে ঘোড়া শস্যাগার বাইরে।

সিএনএন.কম, এনটাইমস ডটকম, হাফিংটনপোস্ট ডটকম, আপনার নিকটতম বড়-শহর সংবাদপত্র ইত্যাদি থেকে পৃষ্ঠাগুলি দেখুন Go এরা সকলেই এটি করে।

যদি কোনও অতিরিক্ত <স্টাইল> বিভাগটি দেহের কোথাও রাখার উপযুক্ত কারণ থাকে - উদাহরণস্বরূপ যদি আপনি () রিয়েল টাইমে বিচিত্র এবং স্বতন্ত্র পৃষ্ঠাগুলি অন্তর্ভুক্ত করেন এবং প্রত্যেকের নিজস্ব একটি এম্বেড <স্টাইল> থাকে এবং সংগঠনটি পরিষ্কার, আরও মডিউলার, আরও বোধগম্য এবং আরও রক্ষণাবেক্ষণযোগ্য হবে - আমি বলি কেবল বুলেটটি কামড়ান। নিশ্চিত যে স্থানীয় ভেরিয়েবলগুলির মতো আমাদের যদি সীমাবদ্ধ সুযোগের সাথে "স্থানীয়" শৈলী থাকতে পারে তবে এটি আরও ভাল। তবে আপনি যে HTML ব্যবহার করতে চান বা পরবর্তী সময়ে আপনি চান তা এইচটিএমএল দিয়ে কাজ করতে যান না।

গোঁড়াটিকে অনুসরণ করার জন্য অবশ্যই সম্ভাব্য ত্রুটিগুলি এবং ভাল (সর্বদা বাধ্য না হলে) কারণগুলি রয়েছে, অন্যরা যেমন বর্ণনা করেছেন। তবে আমার কাছে এটি আরও বেশি বেশি মনে হচ্ছে << স্টাইল> এর মধ্যে <body> এর চিন্তাশীল ব্যবহার ইতিমধ্যে মূলধারায় চলে গেছে।


1
বাস্তববাদ এফটিডাব্লু!
ওয়ারুয়ামা

1
হ্যাঁ আপনি ঠিক. উদাহরণস্বরূপ আমি আমার প্লাগইনের ভিতরে <body>> এ <স্টাইল> ট্যাগ ব্যবহার করি। কেন, কারণ এটি স্টাইলিশ প্লাগইন সামগ্রীগুলির সহজতম উপায়। তবে এক মুহুর্তে, সমস্ত সিএসএস ক্লাসগুলি আমার প্লাগইন ডেটার জন্য অদ্ভুত।
অ্যাভিরিটাম

7

বৈধ এইচটিএমএল নয়, যাইহোক প্রতিটি ব্রাউজার কেবল দ্বিতীয় উদাহরণ বিবেচনা করে।

ফেডোরার অধীনে এফএফ এবং গুগল ক্রোমের সর্বশেষ সংস্করণগুলির অধীনে এবং এক্সপি এর অধীনে এফএফ, অপেরা, আইই এবং ক্রোম পরীক্ষা করা হয়েছে।


6

আমার ধারণা এটি ব্রাউজার থেকে ব্রাউজারে পরিবর্তিত হবে: ব্রাউজারের কোডটি অতিক্রম করার সাথে সাথে সম্ভবত বিশ্বব্যাপী ডিসপ্লে নিয়ম আপডেট করা হবে।

বহিরাগত স্টাইল শীটটি যখন দেরিতে লোড হয় তখন আপনি বৈশ্বিক প্রদর্শনের নিয়মগুলিতে এমন পরিবর্তনগুলি দেখতে পাবেন। এখানে অনুরূপ কিছু ঘটতে পারে তবে সংক্ষিপ্ত উত্তরাধিকারে এটি আসলে রেন্ডার হয় না।

এটি যাইহোক এইচটিএমএল নয়, তাই আমি বলব যে এটি সম্পর্কে চিন্তা করা নিরর্থক জিনিস। <style>ট্যাগগুলি headপৃষ্ঠার বিভাগে অন্তর্ভুক্ত।


5

অন্যরা যেমন বলেছে, শৈলী ট্যাগগুলি মাথার মধ্যে রয়েছে বলে এটি বৈধ HTML নয়।

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


5

<style>ট্যাগে জন্যে<head> অধ্যায়, সমস্ত সামগ্রী থেকে আলাদা।

তথ্যসূত্র: ডাব্লু 3 সি স্পেস এবং ডাব্লু 3 স্কুল


52
প্রশ্ন সম্বোধন করে না। এবং সেই কঠোর নির্দেশিকা বাস্তবতার দ্বারা ছাপিয়ে গেছে। এমন অনেকগুলি মামলা রয়েছে যেখানে লেখকরা এইচটিএমএল শিরোনামে তাদের স্টাইলকে সংজ্ঞায়িত / অন্তর্ভুক্ত করা সম্ভব নয়।
জাভিয়ের

3
এটি 2010 সালে সত্য হতে পারে, তবে এটি আজ একটি গ্রহণযোগ্য উত্তর থেকে অনেক দূরে।
আইজাক লুবো

3

আপনার উদাহরণে, একটি ব্রাউজার কিছুই করার জন্য "অনুমিত" হয় না isn't এইচটিএমএল অবৈধ। হয় ত্রুটি পুনরুদ্ধার ট্রিগার করা হয়, বা পার্সার এটি হিসাবে এটি তৈরি করে।

একটি বৈধ উদাহরণে, একাধিক স্টাইলশিট কেবল একের পর এক উপস্থিত হিসাবে গণ্য করা হয়, ক্যাসকেডটি সাধারণ হিসাবে গণনা করা হয়।


2

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

আমি মনে করি যে:

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

কিছু ক্ষেত্রে, ব্যবহারের styleনিয়ম ছাড়াই , এটি একটি খুব দুর্বল ডিজাইনের অভিজ্ঞতা হতে পারে। সুতরাং, হ্যাঁ, এই ব্যবহারকারীদের কাস্টমাইজেশন প্রয়োজন। ঠিক আছে, তবে এই পরিস্থিতিতে কী সমাধান হবে? কোনও htmlপৃষ্ঠায় সিএসএস toোকানোর বিভিন্ন উপায় বিবেচনা করে , আমি মনে করি এই সমাধানগুলি:


প্রথম বিকল্প: আপনার সিসাদ্মকে জিজ্ঞাসা করুন

সিস্টেমের সিএসএসের কিছু বিধি অন্তর্ভুক্ত করার জন্য আপনার সিস্টেমের বিজ্ঞাপনকে জিজ্ঞাসা করুন stylesheets। এটি বাহ্যিক বা অভ্যন্তরীণ সিএসএস সমাধান হবে। যেমনটি ইতিমধ্যে বলা হয়েছে, এটি সম্ভব নাও হতে পারে।


২ য় বিকল্প: <link>চালু<body>

ব্যবহার করুন বহিস্থিত স্টাইল শীট উপর bodyট্যাগ, অর্থাত, ব্যবহার linkট্যাগ ভিতরে এলাকা এক্সেস আছে (যে হতে হবে, সাইটে ভিতরে bodyট্যাগ এবং নেই headট্যাগ)। কিছু উত্স বলছে এটি ঠিক আছে, তবে MDN এর মতো "একটি ভাল অনুশীলন নয়" :

একটি <link>উপাদানের ক্ষেত্রে পারেন ঘটতে পারে <head>বা <body>উপাদান উপর নির্ভর করে কিনা এটা একটি লিঙ্ক যে ধরনের থাকে শরীর-ঠিক আছে । উদাহরণস্বরূপ, stylesheetলিঙ্কের ধরণটি দেহ-ঠিক আছে, এবং তাই <link rel="stylesheet">দেহে অনুমোদিত। তবে এটি অনুসরণ করা ভাল অভ্যাস নয়; এটি আপনার <link>উপাদানগুলিকে আপনার দেহের সামগ্রী থেকে পৃথক করে আরও ভাল করে তোলে <head>

কিছু অন্যান্য, w3schools<head> মত বিভাগে সীমাবদ্ধ :

দ্রষ্টব্য: এই উপাদানটি কেবলমাত্র প্রধান বিভাগে যায়, তবে এটি বেশ কয়েকবার প্রদর্শিত হতে পারে।

পরীক্ষামূলক

আমি এটি এখানে (ডেস্কটপ পরিবেশ, একটি ব্রাউজারে) পরীক্ষা করেছি এবং এটি আমার পক্ষে কাজ করে। একটি ফাইল তৈরি করুন foo.html:

<!DOCTYPE html>
<html>
<head></head>
<body>
    <link href="bar.css" type="text/css" rel="stylesheet">
    <h1 class="test1">Hello</h1>
    <h1 class="test2">World</h1>
</body>
</html>

এবং তারপরে একটি সিএসএস ফাইল, একই ডিরেক্টরিতে বলা হয় bar.css:

.test1 { 
    color: green;
};

ঠিক আছে, এটি আপনার কাছে ইনস্টিটিউট সিস্টেমের কোথাও কোনও সিএসএস ফাইল আপলোড করে থাকলে এটি সম্ভব হবে। এই ক্ষেত্রে হতে পারে।


তৃতীয় বিকল্প: <style>চালু<body>

ব্যবহারের ইন্টারনেট শৈলী পত্রক উপর bodyট্যাগ, অর্থাত, ব্যবহার styleএলাকা এক্সেস আছে ভিতরে ট্যাগ (যে সাইটে যোগ করা যেতে হবে, ভিতরে bodyট্যাগ এবং নেই headট্যাগ)। এই কি চার্লস স্যালভিয়া 's এবং SZ এর এখানে উত্তর চলেছেন। এই বিকল্পটি নির্বাচন করা, তাদের উদ্বেগ বিবেচনা করুন।


৪ র্থ, ৫ ম এবং 6th ষ্ঠ বিকল্প: জেএস উপায় ways

সতর্কতা এইগুলি <head>পৃষ্ঠার উপাদানটি পরিবর্তন করার সাথে সম্পর্কিত । হয়তো এটি প্রতিষ্ঠানের সিস্টেম প্রশাসকরা অনুমতি দেবেন না । সুতরাং, প্রথমে তাদের অনুমতি চাইতে সুপারিশ করা হয়।

ঠিক আছে, ধরুন অনুমতি দেওয়া হয়েছে, কৌশলটি অ্যাক্সেস করছে <head> । কিভাবে? জাভাস্ক্রিপ্ট পদ্ধতি।

চতুর্থ বিকল্প: নতুন <link>চালু<head>

এটি ২ য় বিকল্পের আরেকটি সংস্করণ। ব্যবহার করুন বহিস্থিত স্টাইল শীট উপর <head>ট্যাগ, অর্থাত, ব্যবহার <link>উপাদান বাহিরে এলাকা এক্সেস আছে (যে হতে হবে, সাইটে, না ভিতরে bodyট্যাগ এবং ভিতরে হ্যাঁ headট্যাগ)। এই সমাধানটি এমডিএন এবং ডাব্লু 3 স্কুলগুলির সুপারিশগুলি মেনে চলে , যেমন উপরে উল্লিখিত হিসাবে ২ য় বিকল্প সমাধানে। একটি নতুন Linkঅবজেক্ট তৈরি করা হবে।

জেএসের মাধ্যমে বিষয়টি সমাধানের জন্য, অনেকগুলি উপায় রয়েছে তবে নীচের কোডলাইনগুলিতে আমি একটি সহজ দেখায়।

পরীক্ষামূলক

আমি এটি এখানে (ডেস্কটপ পরিবেশ, একটি ব্রাউজারে) পরীক্ষা করেছি এবং এটি আমার পক্ষে কাজ করে। একটি ফাইল তৈরি করুন f.html:

<!DOCTYPE html>
<html>
<head></head>
<body>
    <h1 class="test1">Hello</h1>
    <h1 class="test2">World</h1>
    <script>
        // JS code here
    </script>
</body>
</html>

scriptট্যাগের ভিতরে :

var newLink = document.createElement("link");
newLink.href = "bar.css";
newLink.rel = "stylesheet";
newLink.type = "text/css";
document.getElementsByTagName("head")[0].appendChild(newLink);

এবং তারপরে সিএসএস ফাইলে একই ডিরেক্টরিতে বলা হয় bar.css(২ য় বিকল্প হিসাবে):

.test1 { 
    color: green;
};

যেমনটি আমি ইতিমধ্যে বলেছি: আপনি যদি সিস্টেম সিস্টেমে কোনও সিএসএস ফাইল আপলোড করেন তবে এটি কেবল সম্ভব হবে।

5 তম বিকল্প: নতুন <style>চালু<head>

নতুন ব্যবহার করুন অভ্যন্তরীণ শৈলী পত্রক উপর <head>ট্যাগ, অর্থাত, একটি নতুন ব্যবহার <style>উপাদান বাহিরে এলাকা এক্সেস আছে (যে হতে হবে, সাইটে ভিতরে না bodyট্যাগ এবং ভিতরে হ্যাঁ headট্যাগ)। একটি নতুন Styleঅবজেক্ট তৈরি করা হবে।

এটি জেএসের মাধ্যমে সমাধান করা হয়। একটি সহজ উপায় নিম্নলিখিত প্রদর্শিত হয়।

পরীক্ষামূলক

আমি এটি এখানে (ডেস্কটপ পরিবেশ, একটি ব্রাউজারে) পরীক্ষা করেছি এবং এটি আমার পক্ষে কাজ করে। একটি ফাইল তৈরি করুন foobar.html:

<!DOCTYPE html>
<html>
<head></head>
<body>
    <h1 class="test1">Hello</h1>
    <h1 class="test2">World</h1>
    <script>
        // JS code here
    </script>
</body>
</html>

scriptট্যাগের ভিতরে :

var newStyle = document.createElement("style");
newStyle.innerHTML = 
    "h1.test1 {"+
        "color: green;"+
    "}";
document.getElementsByTagName("head")[0].appendChild(newStyle);

6th ষ্ঠ বিকল্প: একটি বিদ্যমান ব্যবহার করে <style> করে<head>

একটি বিদ্যমান ব্যবহার করুন অভ্যন্তরীণ শৈলী পত্রক উপর <head>ট্যাগ, অর্থাত্, একটি ব্যবহার <style>উপাদান বাহিরে এলাকা এক্সেস আছে (যে হতে হবে, সাইটে, না ভিতরে bodyট্যাগ এবং হ্যাঁ ভিতরে headট্যাগ), কিছু যদি উপস্থিত থাকে। একটি নতুন Styleঅবজেক্ট তৈরি করা হবে বা একটি CSSStyleSheetঅবজেক্ট ব্যবহার করা হবে (এখানে গৃহীত সমাধানের কোডটিতে)।

এটি ঝুঁকিপূর্ণ দেখার এক পর্যায়ে। প্রথমত , কারণ এটিতে কোনও <style> বস্তুর অস্তিত্ব থাকতে পারে । আপনি এই সমাধানটি যেভাবে প্রয়োগ করেছেন তার উপর নির্ভর করে আপনি undefinedরিটার্ন পেতে পারেন (সিস্টেমটি বাইরের স্টাইল শিট ব্যবহার করতে পারে )। দ্বিতীয়ত , কারণ আপনি সিস্টেম ডিজাইন লেখকের কাজ সম্পাদনা করবেন (লেখকের বিষয়গুলি)। তৃতীয় , কারণ এটি আপনার প্রতিষ্ঠানের সুরক্ষার আইটি রাজনীতিতে অনুমোদিত না হতে পারে। সুতরাং, এটি করার জন্য অনুমতি জিজ্ঞাসা করুন (অন্যান্য জেএস সমাধানের মতো)

মনে করুন, আবার অনুমতি দেওয়া হয়েছিল:

আপনি এই পদ্ধতি পদ্ধতি উপলব্ধ কিছু সীমাবদ্ধতা বিবেচনা করতে হবে: insertRule()। প্রস্তাবিত সমাধানটিতে ডিফল্ট দৃশ্য এবং প্রথমে একটি অপারেশন ব্যবহৃত হয়stylesheet কিছু উপস্থিত থাকলে ।

পরীক্ষামূলক

আমি এটি এখানে (ডেস্কটপ পরিবেশ, একটি ব্রাউজারে) পরীক্ষা করেছি এবং এটি আমার পক্ষে কাজ করে। একটি ফাইল তৈরি করুন foo_bar.html:

<!DOCTYPE html>
<html>
  <head></head>
  <body>
    <h1 class="test1">Hello</h1>
    <h1 class="test2">World</h1>
    <script>
      // JS code here
    </script>
  </body>
</html>

scriptট্যাগের ভিতরে :

function demoLoop(){ // remove this line
    var elmnt = document.getElementsByTagName("style");
    if (elmnt.length === 0) {
        // there isn't style objects, so it's more interesting create one
        var newStyle = document.createElement("style");
        newStyle.innerHTML =
            "h1.test1 {" +
                "color: green;" +
            "}";
        document.getElementsByTagName("head")[0].appendChild(newStyle);
    } else {
        // Using CSSStyleSheet interface
        var firstCSS = document.styleSheets[0];
        firstCSS.insertRule("h1.test2{color:blue;}"); // at this way (without index specified), will be like an Array unshift() method
    }
} // remove this too
demoLoop(); // remove this too
demoLoop(); // remove this too

এই সমাধানটির জন্য আরেকটি পদ্ধতির এটি CSSStyleDeclarationঅবজেক্ট ব্যবহার করছে ( ডাব্লু 3 স্কুল এবং এমডিএন )) তবে এটি সিস্টেমের সিএসএসে বিদ্যমান নিয়মগুলিকে ওভাররাইড করার ঝুঁকি বিবেচনা করে আকর্ষণীয় হতে পারে না।


সপ্তম বিকল্প: ইনলাইন সিএসএস

ইনলাইন সিএসএস ব্যবহার করুন । এটি সমস্যার সমাধান করে, যদিও পৃষ্ঠার আকারের উপর নির্ভর করে (কোড লাইনে), কোডটির রক্ষণাবেক্ষণ (নিজেই লেখক বা অন্য নির্ধারিত ব্যক্তির দ্বারা) খুব কঠিন হতে পারে।

তবে প্রতিষ্ঠানে আপনার ভূমিকার প্রসঙ্গে বা তার ওয়েব সিস্টেম সুরক্ষা নীতিগুলির উপর নির্ভর করে এটি আপনার কাছে অনন্য উপলব্ধ সমাধান হতে পারে।

পরীক্ষামূলক

একটি ফাইল তৈরি করুন _foobar.html:

<!DOCTYPE html>
<html>
  <head></head>
  <body>
    <h1 style="color: green;">Hello</h1>
    <h1 style="color: blue;">World</h1>    
  </body>
</html>

গাগন কর্তৃক জিজ্ঞাসিত প্রশ্নের কঠোর জবাব দেওয়া

কীভাবে ব্রাউজারের সিএসএস রেন্ডার করার কথা হয় যা অবিসংবাদযুক্ত?

  1. কোনও পৃষ্ঠায় সমস্ত CSS শৈলী ব্যবহার করে কোনও ডেটা স্ট্রাকচার তৈরি করার এবং রেন্ডারিংয়ের জন্য এটি ব্যবহার করার কথা কি?
  2. অথবা এটি শৃঙ্খলা সম্পর্কিত তথ্যটি দেখতে ক্রমে ব্যবহার করে রেন্ডার করে?

(উদ্ধৃতি অভিযোজিত)

আরও সঠিক উত্তরের জন্য, আমি Google এই নিবন্ধগুলিতে পরামর্শ দিচ্ছি:

  • ব্রাউজারগুলি কীভাবে কাজ করে: আধুনিক ওয়েব ব্রাউজারগুলির নেপথ্যে
  • রেন্ডার-ট্রি নির্মাণ, লেআউট এবং পেইন্ট
  • ওয়েবপেজটি "রেন্ডার" করার অর্থ কী?
  • ব্রাউজার রেন্ডারিং কীভাবে কাজ করে - পর্দার আড়ালে
  • রেন্ডারিং - এইচটিএমএল স্ট্যান্ডার্ড
  • 10 রেন্ডারিং - এইচটিএমএল 5

স্ক্রিপ্ট ট্যাগ সহ জাভাস্ক্রিপ্ট ব্যবহার করে +1 ভাল ধারণা,
মূকায়

1

কারণ এটি এইচটিএমএল বৈধ নয় ফলাফলের উপর কোনও প্রভাব ফেলবে না ... এর ঠিক অর্থ হ'ল এইচটিএমএল মানকে (কেবল সাংগঠনিক উদ্দেশ্যে) মেনে চলে। বৈধ হওয়ার জন্য এটি এইভাবে লেখা যেতে পারে:

<html>
<head>
<style type="text/css">
  p.first {color:blue}
  p.second {color:green}
</style>
</head>
<body>
<p class="first" style="color:green;">Hello World</p>
<p class="second" style="color:blue;">Hello World</p>

আমার ধারণা ব্রাউজারটি সর্বশেষ শৈলীতে এটি প্রয়োগ করে।


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