শতাংশের সীমানার বেধ কীভাবে সেট করবেন?


85

শতাংশের ক্ষেত্রে কোনও উপাদানের সীমানা-প্রস্থ কীভাবে সেট করবেন? আমি বাক্য গঠন চেষ্টা করেছিলাম

border-width:10%;

কিন্তু এটি কাজ করে না।

আমি border-widthশতাংশ নির্ধারণ করার কারণটি হ'ল আমার একটি উপাদান রয়েছে width: 80%;এবং height: 80%;এবং আমি উপাদানটি পুরো ব্রাউজার উইন্ডোটি কভার করতে চাই, তাই আমি সমস্ত সীমানা 10% সেট করতে চাই। আমি এটি দুটি উপাদান পদ্ধতির সাথে করছি না, যার মধ্যে একজনের অপরটির পিছনে অবস্থান করা হবে এবং সীমানা হিসাবে কাজ করা হবে কারণ উপাদানটির পটভূমি স্বচ্ছ এবং এর পিছনে কোনও উপাদান স্থাপন করা তার স্বচ্ছতার উপর প্রভাব ফেলবে।

আমি জানি এটি জাভাস্ক্রিপ্টের মাধ্যমে করা যেতে পারে তবে আমি যদি সম্ভব হয় তবে কেবলমাত্র একটি সিএসএসের পদ্ধতি খুঁজছি।


border-widthমান হিসাবে শতাংশ সমর্থন করে না। আপনি em, px, ex ইত্যাদি ব্যবহার করতে পারেন তবে আপনি কেন border-width10% সেট করতে চান ?
সেনটেনসিও

4
শতকরা কিসের? এটি একটি workaround সন্ধানের জন্য অপরিহার্য। সহজ পদ্ধতির স্পষ্টতই ভুল, যেহেতু সেখানে শতাংশের অনুমতি নেই। আপনার সম্ভবত একটি সহায়ক উপাদান স্থাপন এবং ব্যাকগ্রাউন্ডের সাথে খেলতে হবে, তবে বিশদটি "শতাংশের কত শতাংশ" প্রশ্নের উত্তরটির উপর নির্ভর করে?
Jukka K. Korpela

4
পর্দার শতাংশ। উপাদানটি একেবারে
অবস্থানযুক্ত

@ জুক্কা.কর্পেলা: শতাংশের মধ্যে অবস্থান নির্ধারিত কনটেইনার ব্যতীত অন্য যে কোনও কিছু উল্লেখ করা হচ্ছে? তাহলে প্রশ্ন কেন?
রবার্ট কোরিটনিক

@ পীযূষকুশওয়াহা, আপনি কি নিশ্চিত যে আপনি পর্দা (প্রস্থ) বলতে চাইছেন, উইন্ডোর প্রস্থ নয়?
Jukka K. Korpela

উত্তর:


82

সীমানা শতাংশ সমর্থন করে না ... তবে এটি এখনও সম্ভব ...

অন্যরা সিএসএসের স্পেসিফিকেশনের দিকে ইঙ্গিত করেছেন বলে , শতাংশগুলি সীমানায় সমর্থিত নয়:

'border-top-width',
'border-right-width',
'border-bottom-width',
'border-left-width'
  Value:          <border-width> | inherit
  Initial:        medium
  Applies to:     all elements
  Inherited:      no
  Percentages:    N/A
  Media:          visual
  Computed value: absolute length; '0' if the border style is 'none' or 'hidden'

আপনি দেখতে পাচ্ছেন এটি শতাংশ বলে : এন / এ

অ-স্ক্রিপ্টযুক্ত সমাধান

আপনি যেখানে চান এমন একটি রেপার উপাদান দিয়ে আপনার শতাংশের সীমানা অনুকরণ করতে পারেন:

  1. মোড়কের উপাদানটিকে background-colorআপনার পছন্দসই সীমানা রঙ সেট করুন
  2. র্যাপার এলিমেন্টটি paddingশতাংশে সেট করুন (কারণ তারা সমর্থিত)
  3. আপনার উপাদানগুলি background-colorসাদাতে সেট করুন (বা যা কিছু হওয়ার দরকার আছে)

এটি কোনওভাবে আপনার শতাংশের সীমানা অনুকরণ করবে। এই কৌশলটি ব্যবহার করে এমন 25% প্রস্থের সীমানা সহ এমন একটি উপাদানের উদাহরণ এখানে

এইচটিএমএল উদাহরণ হিসাবে ব্যবহৃত

.faux-borders {
    background-color: #f00;
    padding: 1px 25%; /* set padding to simulate border */
}
.content {
    background-color: #fff;
}
<div class="faux-borders">
    <div class="content">
        This is the element to have percentage borders.
    </div>
</div>

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

লিখিত সমাধান

@ বল্টক্লক স্ক্রিপ্টযুক্ত সমাধানটির উল্লেখ করেছে যেখানে আপনি প্রোগ্রামটির সাথে উপাদানগুলির আকার অনুসারে সীমানা প্রস্থ গণনা করতে পারেন।

এটি jQuery ব্যবহার করে অত্যন্ত সাধারণ স্ক্রিপ্ট সহ এর উদাহরণ

var el = $(".content");
var w = el.width() / 4 | 0; // calculate & trim decimals
el.css("border-width", "1px " + w + "px");
.content { border: 1px solid #f00; }
<div class="content">
    This is the element to have percentage borders.
</div>

তবে আপনাকে সচেতন হতে হবে যে প্রতিবার আপনার ধারক আকার পরিবর্তন হওয়ার সাথে সাথে (যেমন ব্রাউজার উইন্ডোর আকার পরিবর্তন করতে হবে) আপনাকে সীমানা প্রস্থকে সামঞ্জস্য করতে হবে । মোড়কের উপাদান সহ আমার প্রথম কাজটি অনেক সহজ বলে মনে হচ্ছে কারণ এটি এই পরিস্থিতিতে স্বয়ংক্রিয়ভাবে প্রস্থকে সামঞ্জস্য করবে।

স্ক্রিপ্টযুক্ত সমাধানের ইতিবাচক দিকটি হ'ল এটি আমার পূর্ববর্তী নন-স্ক্রিপ্টযুক্ত সমাধানে উল্লিখিত পটভূমি সমস্যাগুলি থেকে ভুগছে না।


4
স্ক্রিপ্টবিহীন সমাধানে সমস্যা: set your elements background-color to white (or whatever it needs to be)এটি আধা স্বচ্ছ যাতে ব্যাকগ্রাউন্ড চিত্রটি দেখাতে পারে, অন্য উপাদান ব্যবহার করার ফলে উদ্দেশ্যটি নষ্ট হয়ে যায়।
পিয়ুষ কুশওয়াহা

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

সীমানাযুক্ত সামগ্রীতে স্বচ্ছতার প্রয়োজন হলে অ-স্ক্রিপ্টযুক্ত সমাধানটি কাজ করবে না (যেহেতু মোড়কের পটভূমিটি প্রদর্শিত হবে)।
cmeeren

4
অ-স্ক্রিপ্টযুক্ত সমাধানের সাথে আর একটি সমস্যা: বিভিন্ন সীমান্তের রংগুলি সম্ভব নয় (যেমন border-left-color: green)
আলসো

আমি এর আগে আপনার মতো সমাধান সম্পর্কে একরকম চিন্তাভাবনা করেছি। আমি জানতাম না যে ব্যাকগ্রাউন্ডের সাথে ডিভ এবং বিকল্পের ভিতরে অন্য ডিভের সাথে প্যাডিংটি ভাল ছিল কিনা। এখন এটি বৈধ বলে মনে হচ্ছে। আমার ক্ষেত্রে, এটি ঠিক আমার প্রয়োজন ছিল।
cram2208

37

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

border-left: 9vw solid #F5E5D6;
border-right: 9vw solid #F5E5D6;     

বা

border: 9vw solid #F5E5D6;

6
এটি এখানে কেবলমাত্র সমাধান যা দূর থেকে যুক্তিসঙ্গত।
সেরোসায়েস

4
ওপি যদিও এটি চেয়েছিল তা নয়। ওপিকে ভিউপোর্ট শতাংশে নয়, বর্তমান উপাদান শতাংশে একটি সীমানা চায়।
অটরা

4
@ অট্রা, ওপি ঠিক এটিই বলেছিল: "আমি উপাদানটি পুরো ব্রাউজার উইন্ডোটি cover
কিওয়ারটি

ওহ ঠিক আছে, ঠিক আছে। এর কারণ ওপি প্রকৃতপক্ষে তাদের সমস্যা সম্পর্কে ভুল প্রশ্ন জিজ্ঞাসা করেছিল, ইতিমধ্যে শতাংশে সীমানা নির্ধারণ করা তাদের নির্দিষ্ট সমস্যার একমাত্র সমাধান ছিল বলে মনে করেন। আমি এতে বোকা হয়েছি, দুঃখিত :-)
অটরা

4
এটি সেরা উত্তর!
ড্যামিয়েন রোমিটো

24

সুতরাং এটি একটি পুরানো প্রশ্ন, তবে যারা এখনও উত্তর খুঁজছেন তাদের ক্ষেত্রে সিএসএস সম্পত্তি বক্স-সাইজিং এখানে অমূল্য:

-webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit  */
-moz-box-sizing: border-box;    /* Firefox, other Gecko         */
box-sizing: border-box; 

এর অর্থ হ'ল আপনি ডিভের প্রস্থকে শতাংশে সেট করতে পারবেন এবং ডিভের সাথে যে কোনও সীমানা যুক্ত করবেন সেই শতাংশের মধ্যে অন্তর্ভুক্ত করা হবে। সুতরাং, উদাহরণস্বরূপ, নিম্নলিখিতটি ডিভের প্রস্থের অভ্যন্তরে 1px সীমানা যুক্ত করবে:

div { box-sizing:border-box; width:50%; border-right:1px solid #000; }         

আপনি যদি আরও তথ্য চান: http://css-tricks.com/box-sizing/


4
এটি কার্যকর যখন আপনি সীমানা প্রস্থ এবং কেবলমাত্র পুরো পর্দাটি coveringেকে দেওয়ার বিষয়ে চিন্তা করবেন না, তবে অন্যথায় নয়।
পিয়ুষ কুশওয়াহা

4
তিনি মূলত যা চেয়েছিলেন - পুরো পর্দাটি জুড়ে, তবে একটি সীমানার প্রস্থ সহ। আপনি এখানে সীমানা প্রস্থকে যে কোনও পিক্সেল পরিমাণে পরিবর্তন করতে পারেন এবং এটি আপনার দ্বি শতাংশের প্রস্থকে ছাড়বে না।
কিম্বারলি ফক্স

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

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

4

শতাংশের মান সিএসএসে প্রযোজ্য নয় border-width। এটি চশমা তালিকাভুক্ত করা হয় ।

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


@ রবার্ট কোরিটনিক: ঠিক :) আমি অনুভব করেছি যে আমার জবাব দিয়ে এখনই আমি এটি সম্পাদনা করেছি ...
বোল্টক্লক

@ রবার্ট: সম্ভবত আমি চেষ্টা করে দেখব ... এবং প্রয়োজনে আমি এটি আবার রোল করব।
BoltClock

4

আপনি পিক্সেলের পরিবর্তে শতাংশের জন্য Em ব্যবহার করতে পারেন,

উদাহরণ:

border:10PX dotted #c1a9ff; /* In Pixels */
border:0.75em dotted #c1a9ff; /* Exact same as above in Percentage */

6
em শতাংশ হয় তবে এটি ফন্টের আকারের সাথে সম্পর্কিত, এতে থাকা বাক্স / উপাদানগুলির উচ্চতা বা প্রস্থ নয় not
efreed

কমপক্ষে আমার জন্য পুরো পিক্সেল এ এম রাউন্ড।
aksu

4

আধুনিক ব্রাউজারগুলি vh এবং vw ইউনিটগুলিকে সমর্থন করে যা উইন্ডো ভিউপোর্টের শতাংশ।

উইন্ডো আকারের শতাংশ হিসাবে আপনার খাঁটি সিএসএস সীমানা থাকতে পারে:

border: 5vw solid red;

ব্যবহার করে দেখুন এই উদাহরণে এবং পরিবর্তন জানালা প্রস্থ; উইন্ডোর আকার পরিবর্তন হওয়ার সাথে সাথে সীমানাটি বেধ পরিবর্তন করবে। box-sizing: border-box;খুব দরকারী হতে পারে।


2

বক্স
সাইজিং বাক্সটি সীমানা বাক্সে সাইজিং box-sizing: border-box;সেট করে এবং প্রস্থটি 100% এবং সীমানার জন্য একটি নির্দিষ্ট প্রস্থ স্থাপন করে তারপরে একটি নূন্যতম প্রস্থ যুক্ত করুন যাতে একটি ছোট পর্দার জন্য সীমানা পুরো পর্দা ছাড়িয়ে যাবে না


0

আপনি স্প্যান ব্যবহার করে একটি কাস্টম সীমানা তৈরি করতে পারেন। একটি শ্রেণি সহ স্প্যান তৈরি করুন (সীমান্তটি যে দিকে যাচ্ছে সেদিকে সুনির্দিষ্ট করে) এবং একটি আইডি:

<html>
    <body>
        <div class="mdiv">
            <span class="VerticalBorder" id="Span1"></span>
            <header class="mheader">
                <span class="HorizontalBorder" id="Span2"></span>
            </header>
        </div>
    </body>
</html>

তারপর, আপনি সিএসএস-এ যান এবং ক্লাসের সেট position:absolute, height:100%(উল্লম্ব সীমানা জন্য) width:100%(অনুভূমিক সীমানা জন্য) margin:0%এবং background-color:#000000;। অন্য যে কোনও প্রয়োজনীয় জিনিস যুক্ত করুন:

body{
    margin:0%;
}

div.mdiv{
    position:absolute;
    width:100%;
    height:100%;
    top:0%;
    left:0%;
    margin:0%;
}

header.mheader{
    position:absolute;
    width:100%;
    height:20%; /* You can set this to whatever. I will use 20 for easier calculations. You don't need a header. I'm using it to show you the difference. */
    top:0%;
    left:0%;
    margin:0%;
}

span.HorizontalBorder{
    position:absolute;
    width:100%;
    margin:0%;
    background-color:#000000;
}

span.VerticalBorder{
    position:absolute;
    height:100%;
    margin:0%;
    background-color:#000000;
}

তারপর আইডি সেট অনুরূপ class="VerticalBorder"করতে top:0%;, left:0%;, width:1%;। (যেহেতু mdiv প্রস্থ 100% এ mheader প্রস্থ সমান, প্রস্থ কি এটি সেট 100% করা হবে 1% প্রস্থ সেট করেন তাহলে সীমানা উইন্ডোটির প্রস্থের 1% হবে)। ID সেট করুন যে অনুরূপ class="HorizontalBorder"করতে top:99%, (যেহেতু এটি একটি শিরোলেখ ধারক শীর্ষ অবস্থানে এটা হেডার অনুযায়ী হয় বোঝায় আছে। এই + উচ্চতা যদি আপনি এটি নীচে পৌঁছাতে চান 100% পর্যন্ত যোগ উচিত) left:0%;এবং height:1%(যেহেতু এমডিআইভিটির উচ্চতা মাথার উচ্চতার চেয়ে পাঁচগুণ বেশি [100% = 100, 20% = 20, 100/20 = 5], উচ্চতা আপনি সেট করেছেন তার 20% হবে If আপনি যদি উচ্চতা সেট করেন তবে 1% থেকে সীমানা উইন্ডোটির উচ্চতার .2% হবে)। এটি দেখতে কেমন হবে তা এখানে:

span#Span1{
    top:0%;
    left:0%;
    width:.4%;
}
span#Span2{
    top:99%;
    left:0%;
    width:1%;
}

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

window.addEventListener("load", Loaded);

function Loaded() {
  window.addEventListener("resize", Resized);

  function Resized() {
    var WindowWidth = window.innerWidth;
    var WindowHeight = window.innerHeight;
    var Span1 = document.getElementById("Span1");
    var Span2 = document.getElementById("Span2");
    if (WindowWidth <= 800) {
      Span1.style.width = .4;
    }
    if (WindowHeight <= 600) {
      Span2.style.height = 1;
    }
  }
}

আপনি যদি সবকিছু ঠিকঠাক করেন তবে এটি দেখতে এই লিঙ্কটিতে কেমন তা দেখতে হবে: https://jsfiddle.net/umhgkvq8/12/ কিছু অদ্ভুত কারণে, সীমানাটি jsfiddle এ অদৃশ্য হয়ে যাবে তবে আপনি এটি ব্রাউজারে চালু না করলে নয় not ।


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