সিএসএস: মাঝখানে পাঠ্য দিয়ে বৃত্তটি কীভাবে আঁকবেন?


155

আমি স্ট্যাকওভারফ্লোতে এই উদাহরণটি পেয়েছি:

একা সিএসএস ব্যবহার করে বৃত্ত আঁকুন

যা মহান. তবে আমি কীভাবে সেই উদাহরণটি সংশোধন করব তা জানতে চাই যাতে আমি বৃত্তের মাঝখানে পাঠ্য অন্তর্ভুক্ত করতে পারি?

আমি এটিও পেয়েছি: সিএসএসের বৃত্তে উল্লম্বভাবে এবং অনুভূমিকভাবে পাঠ্যকে কেন্দ্র করে (আইফোন বিজ্ঞপ্তি ব্যাজের মতো)

তবে কোনও কারণে এটি আমার পক্ষে কাজ করছে না। আমি যখন নিম্নলিখিত পরীক্ষার কোডটি তৈরি করি:

<div class="badge">1</div>

একটি বৃত্তের পরিবর্তে, আমি ডিম্বাকৃতি আকার পাই। আমি কোডটি এটিকে কীভাবে কাজে লাগাতে পারি তা দেখার জন্য চেষ্টা করছি।

উত্তর:


327

JSFiddle

.circle {
  width: 500px;
  height: 500px;
  border-radius: 50%;
  font-size: 50px;
  color: #fff;
  line-height: 500px;
  text-align: center;
  background: #000
}
<div class="circle">Hello I am A Circle</div>


8
@ ডট: সত্যই আমার করণীয় নয় - bryanhadaway.com/how-to-create-circles-with-css
জাওয়াদ

3
আপনি যদি সেটি তৈরি করতে পারেন border-radius:50%;তবে প্রস্থ এবং উচ্চতার ভিত্তিতে এই বৈশিষ্ট্যটি প্রতিবার পরিবর্তন না করেই আপনার কোড ইভেন্টটিকে আরও মার্জিত এবং পোর্টেবল করে তোলে;)
বোন কোডিগো

14
ব্যক্তিগতভাবে আমি লাইন-উচ্চতার বৈশিষ্ট্যটি সরিয়ে নিয়ে উল্লম্ব-প্রান্তিককরণ যুক্ত করতাম: মাঝ; প্রদর্শন: টেবিল-ঘর; এইভাবে আপনার পাঠ্যের লাইনগুলি এখনও কেন্দ্রিক থাকবে। jsfiddle.net/z9bLtw99
ministe2003

3
একাধিক লাইন সম্পর্কে কি।
হেনরি ঝু

1
@ দামজানপাভলিকা এই উত্তরের শেষ আপডেটটি দেখুন যা স্পষ্টভাবে কোনও প্রস্থ বা উচ্চতা নির্ধারণ করে না। একাধিক লাইনের জন্যও কাজ করে, আপনি jsfiddle এ সরাসরি যাচাই করতে পারেন
জোসে রুই সান্টোস

57

যদি আপনার সামগ্রীটি মোড়ানো হয় এবং অজানা উচ্চতার হয়ে থাকে তবে এটি আপনার সেরা বাজি:

http://cssdeck.com/labs/aplvrmue

.badge {
  height: 100px;
  width: 100px;
  display: table-cell;
  text-align: center;
  vertical-align: middle;
  border-radius: 50%; /* may require vendor prefixes */
  background: yellow;
}


6
এটি ডিম্বাশয় উত্পন্ন করে, নিখুঁত চেনাশোনা নয়।
সোফিভাইরাস

2
এটিই আসল সমাধান। যদিও আমি অবশ্যই উল্লেখ করতে পারি, display: absoluteএটি অ্যালিংমেন্টকে ভেঙে দেয় - তবে সহজ সমাধান হ'ল এটিকে অন্য একটি ডিভের মধ্যে আবদ্ধ করা।
ওন্দেজ jেলাজকো

1
এএ নিখুঁত বৃত্ত তৈরি করে (ডিম্বাকৃতি নয়)। নিখুঁত বা স্থির অবস্থান ব্যবহারের সময় বেতার মোড়ক ডিভিও আসলে একটি ভাল ধারণা।
krivar

2
পরম পজিশনিংয়ের জন্য, আপনি একটি মোড়ক ব্যবহার করবেন। এটি 180px সর্বোচ্চ সীমাতে যেতে পারে বলে এটি ডিম্বাকৃতি দেয়। সুতরাং আপনি যদি চান প্রস্থের ন্যূনতম প্রস্থ নির্দিষ্ট করে থাকেন এবং সেই মানটির জন্যও উচ্চতা নির্ধারণ করেন। আপনি একটি বৃত্ত পাবেন। অন্যথায় আপনি প্রস্থ এবং উচ্চতা> 180px এর বাইরে একটি ডিম্বাকৃতি পাবেন।
মুগ্ধ করুন

27

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

এইচটিএমএল:

<div class="circle-with-text">
    Here is some text in circle
</div>

সিএসএস:

.circle-with-text {
  justify-content: center;
  align-items: center;
  border-radius: 100%;
  text-align: center;
  display: flex;
}

এটি আপনাকে উলম্ব এবং অনুভূমিকভাবে মাঝারি প্রান্তিক একক লাইন এবং মাল্টি-লাইন পাঠ্যকে অনুমতি দেবে।


1
একটি আদর্শ বিশ্বের সেরা সমাধান। দুঃখের বিষয়, ফ্লেক্সবক্স বাস্তবায়নে অনেকগুলি ক্রস ব্রাউজার বাগ রয়েছে: github.com/philipwalton/flexbugs
jimiayler

আই আই এর জন্য: `` `ডিসপ্লে: -ms-flexbox` ``
মাইকেল গিল্ড

11

আমি মনে করি আপনি একটি ডিম্বাকৃতি বা বৃত্তে পাঠ্য লিখতে চান? কেন এই না?

<span style="border-radius:50%; border:solid black 1px;padding:5px">Hello</span>


8

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

আমার মূল সমস্যাটি ছিল পাঠ্যটি প্রায়শই বৃত্তের সীমা ভেঙে দেয়। এটি সমাধান করতে আমি 4 ডিভ ব্যবহার করে শেষ করেছি। একটি আয়তক্ষেত্রাকার ধারক যা বৃত্তের সর্বাধিক (স্থির) সীমানা নির্দিষ্ট করে। এর ভিতরে ডিভ থাকবে যা এর প্রস্থ এবং উচ্চতাটি 100% এ সেট করে এমনভাবে বৃত্তটি আঁকবে তাই পিতামাতার আকার পরিবর্তন করে প্রকৃত বৃত্তের আকার পরিবর্তন করে। এর অভ্যন্তরে আরেকটি আয়তক্ষেত্রাকার ডিভ থাকবে যা% 's ব্যবহার করে একটি পাঠ্য সীমানা তৈরি করবে যা কোনও পাঠ্যকে বৃত্ত ছাড়তে বাধা দেয় (বেশিরভাগ অংশে) তারপরে অবশেষে পাঠ্যটির জন্য আসল ডিভ এবং উল্লম্ব কেন্দ্রীকরণ হবে।

এটি কোড হিসাবে আরও বোধ করে:

/* Main Container -  this controls the size of the circle */
.circle_container
{
	width : 128px;
	height : 128px;
	margin : 0;
	padding : 0;
/*	border : 1px solid red; */
}

/* Circle Main draws the actual circle */
.circle_main
{
	width : 100%;
	height : 100%;
	border-radius : 50%;
	border : 2px solid black;	/* can alter thickness and colour of circle on this line */
	margin : 0;
	padding : 0;
}

/* Circle Text Container - constrains text area to within the circle */
.circle_text_container
{
	/* area constraints */
	width : 70%;
	height : 70%;
	max-width : 70%;
	max-height : 70%;
	margin : 0;
	padding : 0;

	/* some position nudging to center the text area */
	position : relative;
	left : 15%;
	top : 15%;
	
	/* preserve 3d prevents blurring sometimes caused by the text centering in the next class */
	transform-style : preserve-3d;
	
	/*border : 1px solid green;*/
}

/* Circle Text - the appearance of the text within the circle plus vertical centering */
.circle_text
{
	/* change font/size/etc here */
	font: 11px "Tahoma", Arial, Serif;	
	text-align : center;
	
	/* vertical centering technique */
	position : relative;
	top : 50%;
	transform : translateY(-50%);
}
<div class="circle_container">
	<div class="circle_main">
		<div class="circle_text_container">
			<div class = "circle_text">
				Here is an example of some text in my circle.
			</div>
		</div>
	</div>
</div>			

এটি কীভাবে সংকুচিত হয় তা দেখতে আপনি ধারক ডিভের সীমানা রঙগুলি অস্বচ্ছন্দ করতে পারেন।

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

আশা করি এটি কারও কাজে লাগবে! এইচটিএমএল / সিএসএস আমার মূল শৃঙ্খলা নয় তাই আমি নিশ্চিত যে এটি আরও উন্নত হতে পারে!


8

এইচটিএমএল ট্যাগ সহ সিএসএস ছাড়াই পাঠ্য সহ একটি বৃত্ত আঁকুন

এইচটিএমএল এর জন্য এসভিজি ট্যাগ রয়েছে। আপনি সিএসএসে যেতে না চাইলে আপনি এই মানক পদ্ধতির অনুসরণ করতে পারেন।

 <svg width="100" height="100">
   <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="white" />
     Sorry, your browser does not support inline SVG.
   <text fill="#000000" font-size="18" font-family="Verdana"
     x="15" y="60">ASHISH</text>
 </svg>

এখানে চিত্র বর্ণনা লিখুন


নৈমিত্তিক পাঠকদের জন্য ভবিষ্যতে উল্লেখের জন্য: হিসাবে কোড এবং ইমেজ দেখা যায়, পাঠ্য কেন্দ্রীভূত হয় শুধুমাত্র কারণ font-size, font-family, x, এবং yলাইন আপ। ভার্ডানা ইনস্টল না করে যার জন্য এটি কেন্দ্রীভূত হবে না। ব্যবহার করাও x="50%" y="50%" dominant-baseline="middle" text-anchor="middle"সমস্যার সমাধান করে না।
লসমানোস

6

যদি এটি কেবলমাত্র এক লাইনের পাঠ্য হয় তবে আপনি উপাদানটির উচ্চতার সমান মান সহ লাইন-উচ্চতার বৈশিষ্ট্যটি ব্যবহার করতে পারেন:

height:100px;
line-height:100px;

যদি পাঠ্যের একাধিক লাইন থাকে বা সামগ্রীটি পরিবর্তনশীল হয় তবে আপনি প্যাডিং-শীর্ষ ব্যবহার করতে পারেন:

padding-top:30px;
height:70px;

উদাহরণ: http://jsfiddle.net/2GUFL/


6

অবশ্যই, এটি করতে আপনাকে ট্যাগগুলি ব্যবহার করতে হবে। একটি বৃত্ত তৈরি করতে এবং অন্যটি পাঠ্যের জন্য।

এখানে কিছু কোড আপনাকে সাহায্য করতে পারে

#circle {
    background: #f00;
    width: 200px;
    height: 200px;
    border-radius: 50%;
    color:black;

}
.innerTEXT{
    position:absolute;
    top:80px;
    left:60px;
}

<div id="circle">
    <span class="innerTEXT"> Here a text</span>
</div>

লাইভ উদাহরণ এখানে http://jsbin.com/apumik/1/edit

হালনাগাদ

এখানে কয়েকটি পরিবর্তন সহ কম ছোট

http://jsbin.com/apumik/3/edit


ধন্যবাদ! আমি পোস্টটিতে পাওয়া উদাহরণের চেয়ে আমি আপনার উদাহরণটি আরও ভালভাবে বুঝতে পারি ( স্ট্যাকওভারফ্লো / প্রশ্ন / 4৮০1181/… ) তবে আমি বুঝতে চাই যে সেই উদাহরণটি আমার পক্ষে কেন কাজ করছে না ...
ডট

দেখে মনে হচ্ছে আপনি করছেন একই জিনিস তারা করেছেন, তবে কেবল CSS এর এক শ্রেণিতে মিলিত হয়েছে ...?
বিন্দু

হ্যাঁ, আমি কেবল লক্ষ্য করেছি যে আমিও এটি করেছি।
দৈর্ঘ্য

এটিকে আরও উন্নত করতে আমার পোস্ট এবং আমার কোডটি খারাপভাবে আপডেট করুন: ডি
লিগথ


3

আপনি যদি ফাউন্ডেশন 5 এবং কম্পাস কাঠামো ব্যবহার করেন তবে আপনি এটি চেষ্টা করতে পারেন।

.সাস ইনপুট

$circle-width: rem-calc(25) !default;
$circle-height: $circle-width !default;
$circle-bg: #fff !default;
$circle-radius: 50% !default;
$circle-line-height: $circle-width !default;
$circle-text-align: center !default;

@mixin circle($cw:$circle-width, $ch:$circle-height, $cb:$circle-bg, $clh:$circle-line-height, $cta:$circle-text-align, $cr:$circle-radius) {
    width: $cw;
    height: $ch;
    background: $cb;
    line-height: $clh;
    text-align: $cta;
    @include inline-block;
    @include border-radius($cr);
}

.circle-default {
    @include circle;
}

.css আউটপুট

.circle-default {
  width: 1.78571rem;
  height: 1.78571rem;
  background: white;
  line-height: 1.78571rem;
  text-align: center;
  display: -moz-inline-stack;
  display: inline-block;
  vertical-align: middle;
  *vertical-align: auto;
  zoom: 1;
  *display: inline;
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  -ms-border-radius: 50%;
  -o-border-radius: 50%;
  border-radius: 50%;
}

2

এটি সত্যিই একটি সহজ সেটআপ আছে যা ইউটিউব পৃষ্ঠা থেকে পেয়েছেন। একেবারে রক্ষণাবেক্ষণযোগ্য এবং পুনরায় ব্যবহারযোগ্য।

.circle {
    position: absolute;
    top: 4px;
    color: white;
    background-color: red;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    line-height: 18px;
    font-size: 10px;
    text-align: center;
    cursor: pointer;
    z-index: 999;
}
<div class="circle">2</div>


2

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

এসএএসএস ব্যবহার করে এটির মতো দেখতে পাবেন:

.circle-text {
    position: relative;
    display: block;
    text-align: center;
    border-radius: 50%;
    > .inner-text {
        display: block;
        @extend .center-align;
    }
}

.center-align {
    position: absolute;
    top: 50%;
    left: 50%;
    margin: auto;
    -webkit-transform: translateX(-50%) translateY(-50%);
    -ms-transform: translateX(-50%) translateY(-50%);
    transform: translateX(-50%) translateY(-50%);
}

@mixin circle-text($size) {
    width: $size;
    height: $size;
    @extend .circle-text;
}

এবং ব্যবহার করা যেতে পারে

#red-circle {
    background-color: red;
    border: 1px solid black;
    @include circle-text(50px);
}

#green-circle {
    background-color: green;
    border: 1px solid black;
    @include circle-text(150px);
}

Https://codepen.io/matheusrufca/project/editor/DnYPMK এ ডেমো দেখুন

আউটপুট সিএসএস দেখতে স্নিপেট দেখুন


0

এটি করার একটি উপায় হ'ল পাঠ্যটি মাঝখানে প্রান্তিক করার জন্য ফ্লেক্সবক্স ব্যবহার করা। আমি এটি করতে যেভাবে খুঁজে পেয়েছি তা হল:

এইচটিএমএল:

<div class="circle-without-text">
  <div class="text-inside-circle">
    The text
  </div>
</div>

সিএসএস:

.circle-without-text {
    border-radius: 50%;
    width: 70vh;
    height: 70vh;
    background-color: red;
    position: relative;
 }

.text-inside-circle {
    position: absolute;
    top: 0;
    bottom: 0;
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
 }

এখানে plnkr: https://plnkr.co/edit/EvWYLNfTb1B7igoc3TZx?p= পূর্বরূপ


0

এই কোড ব্যবহার করে এটি প্রতিক্রিয়াশীলও হবে।

<div class="circle">ICON</div>

.circle {
  position: relative;
  display: inline-block;
  width: 100%;
  height: 0;
  padding: 50% 0;
  border-radius: 50%;
  /* Just making it pretty */
  -webkit-box-shadow: 0 4px 0 0 rgba(0, 0, 0, 0.1);
  box-shadow: 0 4px 0 0 rgba(0, 0, 0, 0.1);
  text-shadow: 0 4px 0 rgba(0, 0, 0, 0.1);
  background: #38a9e4;
  color: white;
  font-family: Helvetica, Arial Black, sans;
  font-size: 48px;
  text-align: center;
}

0

.circle {
  width: 500px;
  height: 500px;
  border-radius: 50%;
  font-size: 50px;
  color: #fff;
  line-height: 500px;
  text-align: center;
  background: #000
}
<div class="circle">Hello I am A CircleHello I am A CircleHello I am A CircleHello I am A CircleHello I am A CircleHello I am A CircleHello I am A CircleHello I am A CircleHello I am A Circle</div>


এটি অন্য উত্তরের একটি সরাসরি অনুলিপি। লজ্জা। -1
টিম গৌটি

0

আমি অন্যান্য লোকদের সাথে এবং এর সাথে কিছু উত্তর সংযুক্ত করছিলাম floatএবং relativeএটি আমাকে আমার প্রয়োজনীয় ফলাফল দিয়েছে।

এইচটিএমএলে আমি একটি ডিভ ব্যবহার করি। আমি এটিকে liনেভিগেশন বারের জন্য ব্যবহার করি ।

.large-list-style {
    float: left;
    position: relative;
    top: -8px;

    border-radius: 50%;

    margin-right: 8px;

    background-color: rgb(34, 198, 200);

    font-size: 18px;
    color: white;
}
    .large-list-style:before,
    .large-list-style:after {
        content: '\200B';
        display:inline-block;
        line-height:0;

        padding-top: 50%;
        padding-bottom: 50%;
    }
    .large-list-style:before {
        padding-left: 16px;
    }
    .large-list-style:after {
        padding-right: 16px;
    }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.