আপনি যদি CSS এ / অন্য শর্তগুলি ব্যবহার করতে পারেন?


119

আমি আমার সিএসএসে শর্তাদি ব্যবহার করতে চাই।

ধারণাটি হ'ল আমার একটি পরিবর্তনশীল আছে যা আমি প্রতিস্থাপন করব যখন সাইটটি সঠিক শৈলী-শীট তৈরি করতে চালিত হয়।

আমি এটি চাই যাতে এই পরিবর্তনশীল অনুসারে স্টাইল-শীটের পরিবর্তন হয়!

এটা দেখতে অনেকটা:

[if {var} eq 2 ]
    background-position : 150px 8px;
[else]
    background-position : 4px 8px; 

এই কাজ করা যাবে? তুমি এটা কিভাবে করো?


আপনি কী করতে চেষ্টা করছেন যা সিএসএস শর্তাবলীর প্রয়োজন?
Sapphire_Brick

উত্তর:


137

প্রচলিত অর্থে নয়, তবে আপনি যদি এইচটিএমএল অ্যাক্সেস পেয়ে থাকেন তবে আপনি এটির জন্য ক্লাস ব্যবহার করতে পারেন। এই বিবেচনা:

<p class="normal">Text</p>

<p class="active">Text</p>

এবং আপনার সিএসএস ফাইলে:

p.normal {
  background-position : 150px 8px;
}
p.active {
  background-position : 4px 8px;
}

এটি করার সিএসএস উপায়।


তারপরে সাসের মতো সিএসএস প্রিপ্রসেসর রয়েছে । আপনি সেখানে শর্তসাপেক্ষ ব্যবহার করতে পারেন , যা দেখতে দেখতে এটি পছন্দ করবে:

$type: monster;
p {
  @if $type == ocean {
    color: blue;
  } @else if $type == matador {
    color: red;
  } @else if $type == monster {
    color: green;
  } @else {
    color: black;
  }
}

অসুবিধাগুলি হ'ল, আপনি নিজের স্টাইলশিটগুলি প্রাক-প্রক্রিয়াজাতকরণের জন্য আবদ্ধ এবং শর্তটি সংকলন সময়ে মূল্যায়ন করা হয়, রান সময় নয়।


সিএসএস যথাযথ একটি নতুন বৈশিষ্ট্য হ'ল কাস্টম বৈশিষ্ট্য (ওরফে সিএসএস ভেরিয়েবল)। রান সময় (তাদের সমর্থন ব্রাউজারগুলিতে) এগুলি মূল্যায়ন করা হয়।

তাদের সাথে আপনি এই লাইনে কিছু করতে পারেন:

:root {
  --main-bg-color: brown;
}

.one {
  background-color: var(--main-bg-color);
}

.two {
  background-color: black;
}

শেষ অবধি, আপনি আপনার স্টাইলশীটটি আপনার পছন্দের সার্ভার-সাইড ল্যাঙ্গুয়েজে প্রিপ্রসেস করতে পারেন। আপনি যদি পিএইচপি ব্যবহার করে থাকেন তবে কোনও style.css.phpফাইল পরিবেশন করুন যা দেখতে এরকম কিছু দেখাচ্ছে:

p {
  background-position: <?php echo (@$_GET['foo'] == 'bar')? "150" : "4"; ?>px 8px;
}

এক্ষেত্রে আপনার পারফরম্যান্সের প্রভাব পড়বে, যেহেতু এই জাতীয় স্টাইলশিটটি ক্যাচ করা কঠিন।


10
ভাল উত্তর, আমি কেবল ক্যাশে সম্পর্কিত একটি পয়েন্ট যুক্ত করতে চাই: যেহেতু ব্রাউজারগুলি স্টাইলশিটগুলি ক্যাশে করে এবং সাধারণত পিএইচপি / [প্রোগ্রামিং-ল্যাঙ্গুয়েজ-অফ-পছন্দ দ্বারা উত্পাদিত "গতিশীল" স্টাইলশিটগুলির উপর নির্ভর করা প্রতিটি পৃষ্ঠার জন্য এগুলি পুনরায় ডাউনলোড না করে) । এটি কাজ করার কথা নয়। আপনার যদি সিএসএস পরিবর্তন করার প্রয়োজন হয় তবে আপনি এটি অবশ্যই পৃষ্ঠায় এম্বেড করতে পারেন তবে এটি সামগ্রী / উপস্থাপনা বিচ্ছিন্নতার বিরুদ্ধে যেতে শুরু করে।
প্রতারণা করুন

3
ছদ্মবেশী যা বলেছিল সে সম্পর্কে, এর অর্থ এই নয় যে আপনার গতিময় পরিবর্তনকারী ওয়েবসাইট থাকতে পারে না। স্টাইলস শিটগুলি অচল থাকতে পারে এবং জাভাস্ক্রিপ্ট ব্যবহার করে আপনি jquery বা পিএইচপি বা ছাড়াই উপাদান ক্লাসগুলি পরিবর্তন করতে পারেন যেভাবে উপাদানগুলির স্টাইলিং পরিবর্তন হতে পারে।
csga5000

এবং, আপনি যদি স্ক্রোলবারগুলি স্টাইলাইজ করতে চান তবে কী হবে? (আপনি এইচটিএমএলে ওয়েবকিট-স্ক্রোলবার-বোতামটি খুঁজে পাচ্ছেন না)
জেরি

হুম? এটা কেমন? সাস, সিএসএস ভেরিয়েবল এবং সার্ভারসাইড প্রসেসিং HTML এর উপর নির্ভর করে না। নাকি আমি এখানে কিছু মিস করছি?
বোল্ডউইন

15

নীচে আমার পুরানো উত্তর যা এখনও বৈধ তবে আমার কাছে আজ একটি বেশি মতামত প্রাপ্ত পদ্ধতি রয়েছে:

সিএসএস এত বেশি সাফল্য বোধ করার একটি কারণ হ'ল এটির শর্তসাপেক্ষ বাক্য গঠন নেই। আধুনিক ওয়েব স্ট্যাকটিতে সিএসএস সম্পূর্ণ অপ্রয়োজনীয়। কিছুক্ষণের জন্য SASS ব্যবহার করুন এবং আপনি কেন জানবেন তা জানবেন। SASS এর শর্তসাপেক্ষ বাক্য গঠন রয়েছে ... এবং আদিম সিএসএসের তুলনায় প্রচুর অন্যান্য সুবিধা।


পুরানো উত্তর (এখনও বৈধ):

এটি সাধারণভাবে সিএসএসে করা যায় না!

আপনার ব্রাউজারের শর্ত রয়েছে:

/*[if IE]*/ 
body {height:100%;} 
/*[endif]*/

তবে কেউ আপনাকে জাভাস্ক্রিপ্ট ব্যবহার করে ডিওএম পরিবর্তন করতে বা গতিবেগের ক্লাস নির্ধারণ করতে বা আপনার নিজ নিজ প্রোগ্রামিং ভাষায় শৈলীর সাথে শৈলীর কাঠামো দেওয়া থেকে বিরত রাখে না।

আমি মাঝে মাঝে সিএসএস ক্লাসগুলি স্ট্রিং হিসাবে ভিউতে প্রেরণ করি এবং সেগুলি (পিএইচপি) এর মতো কোডে প্রতিধ্বনিত করি:

<div id="myid" class="<?php echo $this->cssClass; ?>">content</div>

14
বিস্মিত কেউ ইঙ্গিত করেন নি যে শর্তযুক্ত সিনট্যাক্স সিএসএসে নেই। শর্তসাপেক্ষ মন্তব্যগুলি কেবলমাত্র এইচটিএমএলে বিদ্যমান।
বোল্টক্লক

12

আপনি calc()মিশ্র var()শর্তাবলীর সাজানোর জন্য সংমিশ্রণে ব্যবহার করতে পারেন :

:root {
--var-eq-two: 0;
}

.var-eq-two {
    --var-eq-two: 1;
}

.block {
    background-position: calc(
        150px * var(--var-eq-two) +
        4px * (1 - var(--var-eq-two))
    ) 8px;
}

ধারণা


8

আপনি দুটি পৃথক স্টাইলশিট তৈরি করতে এবং তুলনার ফলাফলের ভিত্তিতে এর মধ্যে একটি অন্তর্ভুক্ত করতে পারেন

যে কোনও একটিতে আপনি রাখতে পারেন

background-position : 150px 8px;

অন্য একটিতে

background-position : 4px 8px;

আমি মনে করি যে সিএসএসে আপনি সম্পাদন করতে পারবেন তা কেবল ব্রাউজারের স্বীকৃতি:

শর্তসাপেক্ষ-সিএসএস


8

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

কিছু ছদ্ম-শ্রেণি:

  • : সক্রিয় - উপাদানটি কি ক্লিক করা হচ্ছে?
  • : চেক করা - রেডিও / চেকবক্স / বিকল্প চেক করা হয়? (এটি একটি চেকবক্স ব্যবহারের মাধ্যমে শর্তসাপেক্ষ স্টাইলিংয়ের অনুমতি দেয়!)
  • : খালি - উপাদানটি কি খালি?
  • : পূর্ণস্ক্রিন - দস্তাবেজটি কি পূর্ণ-স্ক্রিন মোডে রয়েছে?
  • : ফোকাস - উপাদানটির কিবোর্ড ফোকাস রয়েছে?
  • : ফোকাস-এর মধ্যে - উপাদান বা এর কোনও বাচ্চার কিবোর্ড ফোকাস রয়েছে?
  • : has ([নির্বাচক]) - উপাদানটিতে কি এমন একটি শিশু রয়েছে যা [নির্বাচক] এর সাথে মেলে? (দুঃখের বিষয়, প্রধান ব্রাউজারগুলির কোনওরাই সমর্থিত নয়))
  • : হোভার - এই উপাদানটির উপর দিয়ে কি মাউস ঘোরাবে?
  • : ইন-রেঞ্জ /: সীমার বাইরে - ইনপুট মান / বাইরের ন্যূনতম এবং সর্বাধিক সীমাতে থাকে?
  • : অবৈধ /: বৈধ - ফর্ম উপাদানটিতে কী অবৈধ / বৈধ সামগ্রী রয়েছে?
  • : লিঙ্ক - এটি কি একটি অপরিচিত লিঙ্ক?
  • : not () - নির্বাচককে উল্টে দিন।
  • : টার্গেট - এই উপাদানটি কি ইউআরএল খণ্ডের লক্ষ্য?
  • : পরিদর্শন - ব্যবহারকারী কি এই লিঙ্কটি এর আগে দেখেছেন?

উদাহরণ:

div { color: white; background: red }
input:checked + div { background: green }
<input type=checkbox>Click me!
<div>Red or green?</div>


6

সিএসএস ফাইলগুলি পিএইচপি হিসাবে পার্স করতে সার্ভারটি সেট আপ করুন এবং তারপরে একটি সাধারণ পিএইচপি বিবৃতি দিয়ে ভেরিয়েবল ভেরিয়েবলকে সংজ্ঞায়িত করুন।

অবশ্যই এটি ধরে নিয়েছে আপনি পিএইচপি ব্যবহার করছেন ...


2
আপনি "আপনার প্রোগ্রামিং বা টেম্প্লেটিংয়ের পছন্দের ভাষা" দিয়ে "পিএইচপি" প্রতিস্থাপন করতে পারেন
কোয়ান্টিন

1
সমস্যাটি হল, আপনার সিএসএস যদি 50kb হয় এবং আপনি কেবল কয়েকটি মান পরিবর্তন করেন তবে স্থির এবং ক্যাশেড হওয়া কি ভাল নয়?
অ্যালেক্স

2
হ্যাঁ, তবে আপনি গতিশীলতার প্রয়োজনে অংশগুলি বের করতে পারেন এবং সেগুলির মাধ্যমে সেগুলি পুনরায় অন্তর্ভুক্ত করতে পারেন @import url('dynamic.css.php')
বোল্ডউইন

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

5

আপনি যদি না চান পরিবর্তে ব্যবহার করতে পারেন

.Container *:not(a)
{
    color: #fff;
}

3

আমি যতদূর জানি, সিএসএসে / তারপর / অন্য কোনও নেই। বিকল্পভাবে, আপনি কোনও উপাদানের পটভূমি-অবস্থানের বৈশিষ্ট্য পরিবর্তন করতে জাভাস্ক্রিপ্ট ফাংশন ব্যবহার করতে পারেন।


3

তবুও অন্য কোনো বিকল্প সি প্রাক প্রসেসর ব্যবহার করা (যদি আপনি চান কিনা তা যে যদি বিবৃতি পরিবর্তনশীল মূল্যায়ন বা না হতে উপর ভিত্তি করে), হিসাবে বর্ণনা এখানে


3

(হ্যাঁ, পুরানো থ্রেড But তবে এটি গুগল-অনুসন্ধানের শীর্ষে পরিণত হয়েছে যাতে অন্যরাও আগ্রহী হতে পারে)

আমার ধারণা, জাভাস্ক্রিপ্টের সাথে যদি / অন্য-যুক্তি সম্পন্ন করা যায়, যা পরিবর্তনশীলভাবে স্টাইলশীটগুলি লোড / আনলোড করতে পারে। আমি ব্রাউজার ইত্যাদি জুড়ে এটি পরীক্ষা করিনি তবে এটি কাজ করা উচিত। এই আপনি শুরু করতে হবে:

http://www.javascriptkit.com/javatutors/loadjavascriptcss.shtml


3

উপরের বোল্ডউইন উত্তরের জন্য এটি একটি অতিরিক্ত অতিরিক্ত তথ্য।

যদি / অন্যটি করতে কিছু পিএইচপি কোড যুক্ত করুন

if($x==1){
  print "<p class=\"normal\">Text</p>\n";
} else {
  print "<p class=\"active\">Text</p>\n";
}

3

আপনার সমস্ত শর্তের সুযোগের জন্য আপনি ধারক ডিভি যুক্ত করতে পারেন।

ধারক ডিভাইসে শ্রেণি হিসাবে শর্তের মান যুক্ত করুন। (আপনি এটি সার্ভার সাইড প্রোগ্রামিং দ্বারা সেট করতে পারেন - পিএইচপি / এসপি ...)

<!--container div-->
<div class="true-value">
   <!-- your content -->
   <p>my content</p>
   <p>my content</p>
   <p>my content</p>
</div>

এখন আপনি প্রতিটি উপাদানকে ক্লাস না যুক্ত করে নেস্টেড সিলেক্টর ব্যবহার করে ডিভের সমস্ত উপাদানগুলির জন্য কনটেইনার ক্লাসটি গ্লোবাল ভেরিয়েবল হিসাবে ব্যবহার করতে পারেন।

.true-value p{
   background-color:green;
}
.false-value p{
   background-color:red;
}

2

আপনি এই উদ্দেশ্যে জাভাস্ক্রিপ্ট ব্যবহার করতে পারেন, এইভাবে:

  1. প্রথমে আপনি 'সাধারণ' শ্রেণির জন্য এবং 'সক্রিয়' শ্রেণীর জন্য সিএসএস সেট করুন
  2. তারপর আপনি আপনার উপাদানে দিতে আইডি 'MyElement'
  3. এবং এখন আপনি জাভাস্ক্রিপ্টে নিজের অবস্থা তৈরি করেছেন, নীচের উদাহরণের মতো কিছু ... (আপনি এটি চালাতে পারেন, মাইভারের মান 5 এ পরিবর্তন করতে পারেন এবং আপনি এটি কীভাবে কাজ করবেন তা দেখতে পাবেন)

var myVar = 4;

if(myVar == 5){
  document.getElementById("MyElement").className = "active";
}
else{
  document.getElementById("MyElement").className = "normal";
}
.active{
  background-position : 150px 8px;
  background-color: black;
}
.normal{
  background-position : 4px 8px; 
  background-color: green;
}
div{
  width: 100px;
  height: 100px;
  }
<div id="MyElement">
  
  </div>


2

সিএসএস হ'ল একটি দুর্দান্ত নকশা করা দৃষ্টান্ত, এবং এর বৈশিষ্ট্যগুলির অনেকগুলি ব্যবহার করা হয় না।

যদি কোনও শর্ত এবং পরিবর্তনশীল দ্বারা আপনি বোঝাতে একটি প্রক্রিয়া পুরো ডকুমেন্টে কিছু মান পরিবর্তনের জন্য বিতরণ করার জন্য বা কোনও উপাদানটির আওতায় রেখে থাকেন তবে এটি কীভাবে করবেন:

var myVar = 4;
document.body.className = (myVar == 5 ? "active" : "normal");
body.active .menuItem {
  background-position : 150px 8px;
  background-color: black;
}
body.normal .menuItem {
  background-position : 4px 8px; 
  background-color: green;
}
<body>
<div class="menuItem"></div>
</body>

এইভাবে, আপনি সিএসএস শৈলীতে ভেরিয়েবলের প্রভাব বিতরণ করুন। এটি @ অ্যামাইচাই এবং @ সেরিগা প্রস্তাবিতগুলির সাথে সমান, তবে আরও বহুমুখী।

এরকম আর একটি কৌশলটি হ'ল ডকুমেন্ট জুড়ে কিছু সক্রিয় আইটেমের আইডি বিতরণ করা, উদাহরণস্বরূপ মেনুটি হাইলাইট করার সময় আবার: (ফ্রিমার্কার সিনট্যাক্স ব্যবহৃত হয়েছে)

var chosenCategory = 15;
document.body.className = "category" + chosenCategory;
<#list categories as cat >
    body.category${cat.id} .menuItem { font-weight: bold; }
</#list>
<body>
<div class="menuItem"></div>
</body>

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

উত্পাদক প্ল্যাটফর্মের সাথে সিএসএসের সাথে "শর্তাবলী" করার আরও একটি কৌশল হ'ল:

.myList {
   /* Default list formatting */
}
.myList.count0 {
   /* Hide the list when there is no item. */
   display: none;
}
.myList.count1 {
   /* Special treatment if there is just 1 item */
   color: gray;
}
<ul class="myList count${items.size()}">
<!-- Iterate list's items here -->
<li>Something...</div>
</ul>


1

যদি আপনি jquery ব্যবহারের জন্য উন্মুক্ত হন, আপনি HTML এর মধ্যে জাভাস্ক্রিপ্ট ব্যবহার করে শর্তযুক্ত বিবৃতি সেট করতে পারেন:

$('.class').css("color",((Variable > 0) ? "#009933":"#000"));

.classভেরিয়েবলের মান এর চেয়ে বেশি হলে এটি পাঠ্যের রঙকে সবুজ করে তুলবে 0



-1

আপনি ট্যাগে সিএসএস লিখলে আপনি পিএইচপি ব্যবহার করতে পারেন

<style>
    section {
        position: fixed;
        top: <?php if ($test == $tset) { echo '10px' }; ?>;
    }
</style
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.