Tôi đã xem xét cú pháp đánh dấu được sử dụng trong GitHub một thời gian nhưng ngoại trừ thay đổi kích thước hình ảnh trong phạm vi trang readme.md, tôi không thể tìm ra cách căn giữa hình ảnh trong đó.
Có thể không? Nếu là nó, làm thế nào?
Tôi đã xem xét cú pháp đánh dấu được sử dụng trong GitHub một thời gian nhưng ngoại trừ thay đổi kích thước hình ảnh trong phạm vi trang readme.md, tôi không thể tìm ra cách căn giữa hình ảnh trong đó.
Có thể không? Nếu là nó, làm thế nào?
Câu trả lời:
Tôi đã xem cú pháp đánh dấu được sử dụng trong github [...], tôi không thể tìm ra cách căn giữa hình ảnh
TL; DR
Không, bạn không thể chỉ bằng cách dựa vào cú pháp Markdown. Markdown không quan tâm đến định vị.
Lưu ý: Một số bộ xử lý markdown hỗ trợ bao gồm HTML (như được chỉ ra đúng bởi @ waldyr.ar) và trong trường hợp GitHub, bạn có thể dự phòng một cái gì đó như <div style="text-align:center"><img src="..." /></div>
. Coi chừng không có gì đảm bảo hình ảnh sẽ được căn giữa nếu kho lưu trữ của bạn bị rẽ nhánh trong một môi trường lưu trữ khác (Codeplex, BitBucket, ...) hoặc nếu tài liệu không được đọc qua trình duyệt (xem trước Sublime Text Markdown, MarkdownPad, VisualStudio Web Bản xem trước thiết yếu Markdown, ...).
Lưu ý 2: Hãy nhớ rằng ngay cả trong trang web GitHub, cách hiển thị đánh dấu không đồng nhất. Wiki, ví dụ, sẽ không cho phép lừa đảo vị trí css như vậy.
Phiên bản không rút gọn
Các cú pháp Markdown không cung cấp một với khả năng kiểm soát vị trí của một hình ảnh.
Trong thực tế, nó sẽ là đường biên giới chống lại triết lý Markdown để cho phép định dạng như vậy, như đã nêu trong "Triết học" phần
"Một tài liệu có định dạng Markdown phải được xuất bản nguyên trạng, dưới dạng văn bản thuần túy, mà không trông giống như nó được đánh dấu bằng các thẻ hoặc hướng dẫn định dạng."
Các tệp Markdown được hiển thị bởi trang web github.com thông qua việc sử dụng thư viện Ruby Redcarpet .
Redcarpet trưng bày một số tiện ích mở rộng (chẳng hạn như gạch ngang, chẳng hạn) không phải là một phần của cú pháp Markdown tiêu chuẩn và cung cấp thêm "tính năng". Tuy nhiên, không có tiện ích mở rộng được hỗ trợ nào cho phép bạn căn giữa hình ảnh.
<img align="..." src="..." alt="...">
<span style="display:block;text-align:center">![Test Automation]Automated-Testing.png)</span>
align
thuộc tính trên một img
thẻ bị phản đối như của HTML 4.01 và lạc hậu như của HTML5.
Đây là từ hỗ trợ của Github:
Này Waldyr,
Markdown không cho phép bạn điều chỉnh căn chỉnh trực tiếp (xem tài liệu tại đây: http://daredfireball.net/projects/markdown/syntax#img ), nhưng bạn chỉ có thể sử dụng thẻ 'img' HTML thô và thực hiện căn chỉnh với nội tuyến css.
Chúc mừng
Vì thế nó có thể căn chỉnh hình ảnh! Bạn chỉ cần sử dụng css nội tuyến để giải quyết vấn đề. Bạn có thể lấy một ví dụ từ repo github của tôi . Ở dưới cùng của README.md có một hình ảnh được căn giữa. Để đơn giản, bạn có thể làm như sau:
<p align="center">
<img src="http://some_place.com/image.png" />
</p>
Mặc dù, như nulltoken đã nói, nó sẽ là ranh giới chống lại triết lý Markdown!
Mã này từ readme của tôi :
<p align="center">
<img src="https://github.com/waldyr/Sublime-Installer/blob/master/sublime_text.png?raw=true" alt="Sublime's custom image"/>
</p>
Tạo đầu ra hình ảnh này, ngoại trừ chính giữa khi được xem trên GitHub:
align
thuộc tính không được hỗ trợ trong HTML5 ?
Ngoài ra, nếu bạn có quyền kiểm soát css, bạn có thể thông minh với các tham số url và css .
Đánh dấu
![A cute kitten](http://placekitten.com/200/300?style=centerme)
Và CSS:
img[src$="centerme"] {
display:block;
margin: 0 auto;
}
Bạn có thể tạo một loạt các tùy chọn kiểu dáng theo cách này và vẫn giữ cho việc đánh dấu sạch mã bổ sung. Tất nhiên, bạn không có quyền kiểm soát những gì xảy ra nếu người khác sử dụng đánh dấu ở một nơi khác nhưng đó là vấn đề về kiểu dáng chung với tất cả các tài liệu đánh dấu mà một người chia sẻ.
Đối với căn lề trái
<img align="left" width="600" height="200" src="https://www.python.org/python-.png">
Đối với căn lề phải
<img align="right" width="600" height="200" src="https://www.python.org/python-.png">
Và để căn chỉnh trung tâm
<p align="center">
<img width="600" height="200" src="https://www.python.org/python-.png">
</p>
Ngã ba nó ở đây để tham khảo trong tương lai, nếu bạn thấy điều này hữu ích.
Bạn cũng có thể thay đổi kích thước hình ảnh theo chiều rộng và chiều cao mong muốn . Ví dụ:
<p align="center">
<img src="https://anyserver.com/image.png" width="750px" height="300px"/></p>
Để thêm chú thích chính giữa cho hình ảnh, chỉ cần thêm một dòng:
<p align="center">This is a centered caption for the image<p align="center">
May mắn thay, điều này hoạt động cả cho các trang README.md và GitHub Wiki.
Chúng ta có thể sử dụng điều này. Vui lòng thay đổi vị trí src của ur img từ thư mục git và thêm văn bản thay thế nếu img không được tải
<p align="center">
<img src="ur img url here" alt="alternate text">
</p>
Chỉ cần vào Readme.mdtập tin và sử dụng mã này.
<div align="center">
<img src=https://newfastuff.com/wp-content/uploads/2019/05/bW7QXVB.png" >
<p>Perfectly balanced</p>
</div>
<div align=”center”> [ Your content here ]</div>
phù hợp với mọi thứ trong trang và trung tâm căn chỉnh nó theo kích thước của trang.
Cách của tôi để giải quyết vấn đề với định vị hình ảnh là sử dụng các thuộc tính HTML:
![Image](Image.svg){ width="800" height="600" style="display: block; margin: 0 auto" }
Hình ảnh được thay đổi kích thước và căn giữa đúng cách, ít nhất là trong trình kết xuất đánh dấu VS cục bộ của tôi.
Sau đó, tôi đã đẩy các thay đổi sang repo và không may nhận ra rằng nó không hoạt động đối với tệp GitHub README.md . Tuy nhiên, tôi sẽ để lại câu trả lời này vì nó có thể giúp đỡ người khác.
Vì vậy, cuối cùng, tôi đã kết thúc bằng cách sử dụng thẻ HTML cũ tốt:
<img src="Image.svg" alt="Image" width="800" height="600" style="display: block; margin: 0 auto" />
Nhưng đoán xem? Một số phương thức JS đã thay thế style
thuộc tính của tôi ! Tôi thậm chí đã thửclass
thuộc tính và với kết quả tương tự!
Sau đó, tôi đã tìm thấy trang chính sau khi sử dụng HTML trường học cũ hơn:
<p align="center">
<img src="Image.svg" alt="Image" width="800" height="600" />
</p>
Cái này đang hoạt động tốt, tuy nhiên, tôi muốn để lại mà không cần bình luận thêm ...
Cách tiếp cận đánh dấu "thuần túy" có thể xử lý việc này là thêm hình ảnh vào bảng và sau đó căn giữa ô:
| ![Image](img.png) |
| :--: |
Nó sẽ tạo ra HTML tương tự như thế này:
<table>
<thead>
<tr>
<th style="text-align:center;"><img src="img.png" alt="Image"></th>
</tr>
</thead>
<tbody>
</tbody>
</table>
Sử dụng HTML / CSS này để thêm và căn giữa hình ảnh và đặt kích thước của nó thành 60% chiều rộng không gian màn hình bên trong tệp đánh dấu của bạn, thường là một giá trị khởi đầu tốt:
<img src="https://i.stack.imgur.com/RJj4x.png"
style="display:block;float:none;margin-left:auto;margin-right:auto;width:60%">
Thay đổi width
giá trị CSS thành bất kỳ tỷ lệ phần trăm nào bạn muốn hoặc loại bỏ hoàn toàn để sử dụng kích thước mặc định đánh dấu, mà tôi nghĩ là 100% chiều rộng màn hình nếu hình ảnh lớn hơn màn hình hoặc nếu không thì đó là chiều rộng hình ảnh thực tế.
Làm xong!
Hoặc, tiếp tục đọc để biết thêm thông tin.
Chỉ cần sao chép và dán tệp này lên đầu tệp đánh dấu của bạn để căn giữa và thay đổi kích thước tất cả các hình ảnh trong tệp (sau đó chỉ cần chèn bất kỳ hình ảnh nào bạn muốn với cú pháp đánh dấu bình thường):
<style>
img
{
display:block;
float:none;
margin-left:auto;
margin-right:auto;
width:60%;
}
</style>
Hoặc, đây là cùng một mã như trên nhưng với các nhận xét chi tiết về HTML và CSS để giải thích chính xác những gì đang diễn ra:
<!-- (This is an HTML comment). Copy and paste this entire HTML `<style>...</style>` element (block)
to the top of your markdown file -->
<style>
/* (This is a CSS comment). The below `img` style sets the default CSS styling for all images
hereafter in this markdown file. */
img
{
/* Default display value is `inline-block`. Set it to `block` to prevent surrounding text from
wrapping around the image. Instead, `block` format will force the text to be above or below the
image, but never to the sides. */
display:block;
/* Common float options are `left`, `right`, and `none`. Set to `none` to override any previous
settings which might have been `left` or `right`. `left` causes the image to be to the left,
with text wrapped to the right of the image, and `right` causes the image to be to the right,
with text wrapped to its left, so long as `display:inline-block` is also used. */
float:none;
/* Set both the left and right margins to `auto` to cause the image to be centered. */
margin-left:auto;
margin-right:auto;
/* You may also set the size of the image, in percent of width of the screen on which the image
is being viewed, for example. A good starting point is 60%. It will auto-scale and auto-size
the image no matter what screen or device it is being viewed on, maintaining proporptions and
not distorting it. */
width:60%;
/* You may optionally force a fixed size, or intentionally skew/distort an image by also
setting the height. Values for `width` and `height` are commonly set in either percent (%)
or pixels (px). Ex: `width:100%;` or `height:600px;`. */
/* height:400px; */
}
</style>
Bây giờ, cho dù bạn chèn một hình ảnh bằng cách sử dụng markdown:
![](https://i.stack.imgur.com/RJj4x.png)
Hoặc HTML trong tệp đánh dấu của bạn:
<img src="https://i.stack.imgur.com/RJj4x.png">
... nó sẽ được tự động căn giữa và có kích thước tới 60% chiều rộng màn hình, như được mô tả trong các nhận xét trong HTML và CSS ở trên. (Tất nhiên kích thước 60% cũng thực sự dễ dàng thay đổi và tôi cũng trình bày những cách đơn giản dưới đây để thực hiện trên cơ sở từng hình ảnh).
Cho dù bạn có sao chép và dán <style>
khối ở trên vào đầu tệp đánh dấu của mình hay không, điều này cũng sẽ hoạt động, vì nó sẽ ghi đè và được ưu tiên hơn bất kỳ cài đặt kiểu phạm vi tệp nào bạn có thể đặt ở trên:
<img src="https://i.stack.imgur.com/RJj4x.png" style="display:block;float:none;margin-left:auto;margin-right:auto;width:60%">
Bạn cũng có thể định dạng nó trên nhiều dòng, như thế này và nó vẫn sẽ hoạt động:
<img src="https://i.stack.imgur.com/RJj4x.png"
alt="this is an optional description of the image to help the blind and show up in case the
image won't load"
style="display:block; /* override the default display setting of `inline-block` */
float:none; /* override any prior settings of `left` or `right` */
/* set both the left and right margins to `auto` to center the image */
margin-left:auto;
margin-right:auto;
width:60%; /* optionally resize the image to a screen percentage width if you want too */
">
Thêm toàn bộ điều này vào đầu tập tin đánh dấu của bạn.
<style>
/* By default, make all images center-aligned, and 60% of the width
of the screen in size */
img
{
display:block;
float:none;
margin-left:auto;
margin-right:auto;
width:60%;
}
/* Create a CSS class to style images to left-align, or "float left" */
.leftAlign
{
display:inline-block;
float:left;
/* provide a 15 pixel gap between the image and the text to its right */
margin-right:15px;
}
/* Create a CSS class to style images to right-align, or "float right" */
.rightAlign
{
display:inline-block;
float:right;
/* provide a 15 pixel gap between the image and the text to its left */
margin-left:15px;
}
</style>
Bây giờ, img
khối CSS của bạn đã đặt cài đặt mặc định cho hình ảnh được căn giữa và 60% chiều rộng của không gian màn hình về kích thước, nhưng bạn có thể sử dụng các lớp leftAlign
và rightAlign
CSS để ghi đè các cài đặt đó trên cơ sở từng hình ảnh.
Ví dụ: hình ảnh này sẽ được căn giữa và kích thước 60% (mặc định tôi đặt ở trên):
<img src="https://i.stack.imgur.com/RJj4x.png">
Hình ảnh này sẽ được căn trái , tuy nhiên, với gói văn bản ở bên phải, sử dụng leftAlign
lớp CSS mà chúng ta vừa tạo ở trên!
<img src="https://i.stack.imgur.com/RJj4x.png" class="leftAlign">
Nó có thể trông như thế này:
Tuy nhiên, bạn vẫn có thể ghi đè bất kỳ thuộc tính CSS nào của nó thông qua style
thuộc tính , chẳng hạn như chiều rộng, như sau:
<img src="https://i.stack.imgur.com/RJj4x.png" class="leftAlign" style="width:20%">
Và bây giờ bạn sẽ nhận được điều này:
img
mặc định đánh dấuMột tùy chọn khác cho những gì chúng tôi vừa trình bày ở trên, nơi chúng tôi đã sửa đổi img
property:value
cài đặt mặc định và tạo 2 lớp, là chỉ để lại tất cả các img
thuộc tính đánh dấu mặc định , nhưng tạo 3 lớp CSS tùy chỉnh, như sau:
<style>
/* Create a CSS class to style images to center-align */
.centerAlign
{
display:block;
float:none;
/* Set both the left and right margins to `auto` to cause the image to be centered. */
margin-left:auto;
margin-right:auto;
width:60%;
}
/* Create a CSS class to style images to left-align, or "float left" */
.leftAlign
{
display:inline-block;
float:left;
/* provide a 15 pixel gap between the image and the text to its right */
margin-right:15px;
width:60%;
}
/* Create a CSS class to style images to right-align, or "float right" */
.rightAlign
{
display:inline-block;
float:right;
/* provide a 15 pixel gap between the image and the text to its left */
margin-left:15px;
width:60%;
}
</style>
Sử dụng chúng, tất nhiên, như thế này:
<img src="https://i.stack.imgur.com/RJj4x.png" class="centerAlign" style="width:20%">
Lưu ý cách tôi đặt thuộc tính theo cách thủ công bằng cách width
sử dụng style
thuộc tính CSS ở trên, nhưng nếu tôi muốn làm gì đó phức tạp hơn, tôi cũng có thể tạo một số lớp bổ sung như thế này, thêm chúng vào bên trong <style>...</style>
khối ở trên:
/* custom CSS class to set a predefined "small" size for an image */
.small
{
width:20%;
/* set any other properties, as desired, inside this class too */
}
Bây giờ bạn có thể gán nhiều lớp cho cùng một đối tượng, như thế này. Đơn giản chỉ cần tách tên lớp bằng một khoảng trắng, KHÔNG phải dấu phẩy . Trong trường hợp cài đặt xung đột, tôi tin rằng cài đặt nào đến sau cùng sẽ là một trong đó có hiệu lực, trọng bất kỳ cài đặt trước đó được thiết lập. Điều này cũng nên là trường hợp trong trường hợp bạn thiết lập các tính chất tương tự CSS nhiều lần trong các lớp CSS cùng hoặc bên trong HTML cùng style
thuộc tính.
<img src="https://i.stack.imgur.com/RJj4x.png" class="centerAlign small">
Bí quyết cuối cùng là một mẹo tôi đã học được trong câu trả lời này ở đây: Làm thế nào tôi có thể sử dụng CSS để tạo kiểu cho nhiều hình ảnh khác nhau? . Như bạn có thể thấy ở trên, cả 3 align
lớp CSS đều đặt chiều rộng hình ảnh thành 60%. Do đó, cài đặt chung này có thể được đặt cùng một lúc như thế này nếu bạn muốn, sau đó bạn có thể đặt cài đặt cụ thể cho từng lớp sau đó:
<style>
/* set common properties for multiple CSS classes all at once */
.centerAlign, .leftAlign, .rightAlign {
width:60%;
}
/* Now set the specific properties for each class individually */
/* Create a CSS class to style images to center-align */
.centerAlign
{
display:block;
float:none;
/* Set both the left and right margins to `auto` to cause the image to be centered. */
margin-left:auto;
margin-right:auto;
}
/* Create a CSS class to style images to left-align, or "float left" */
.leftAlign
{
display:inline-block;
float:left;
/* provide a 15 pixel gap between the image and the text to its right */
margin-right:15px;
}
/* Create a CSS class to style images to right-align, or "float right" */
.rightAlign
{
display:inline-block;
float:right;
/* provide a 15 pixel gap between the image and the text to its left */
margin-left:15px;
}
/* custom CSS class to set a predefined "small" size for an image */
.small
{
width:20%;
/* set any other properties, as desired, inside this class too */
}
</style>
Theo như tôi quan tâm, bất cứ điều gì có thể được viết trong một tài liệu đánh dấu và nhận được kết quả mong muốn là tất cả những gì chúng ta có sau đó, không phải là một cú pháp "đánh dấu thuần túy".
Trong C và C ++, trình biên dịch biên dịch thành mã lắp ráp và sau đó lắp ráp được lắp ráp thành nhị phân. Tuy nhiên, đôi khi, bạn cần điều khiển mức thấp mà chỉ lắp ráp có thể cung cấp và do đó bạn có thể viết lắp ráp nội tuyến ngay bên trong tệp nguồn C hoặc C ++. Hội là ngôn ngữ "cấp thấp hơn" và nó có thể được viết ngay bên trong C và C ++.
Vì vậy, nó là với markdown. Markdown là ngôn ngữ cấp cao được hiểu theo HTML và CSS. Tuy nhiên, khi chúng tôi cần kiểm soát bổ sung, chúng tôi chỉ có thể "nội tuyến" HTML và CSS cấp thấp hơn ngay bên trong tệp đánh dấu của mình và nó vẫn sẽ được giải thích chính xác. Do đó, theo một nghĩa nào đó, HTML và CSS là cú pháp "đánh dấu" hợp lệ.
Vì vậy, để căn giữa một hình ảnh trong markdown, hãy sử dụng HTML và CSS.
Cách thêm hình ảnh cơ bản trong đánh dấu với định dạng HTML và CSS "hậu trường" mặc định:
Đánh dấu này:
![](https://i.stack.imgur.com/RJj4x.png)
Sẽ sản xuất đầu ra này:
Đây là hexacopter bắn lửa của tôi, tôi đã thực hiện .
Bạn cũng có thể tùy ý thêm một mô tả trong dấu ngoặc vuông mở. Thành thật mà nói tôi thậm chí không chắc chắn điều đó là gì, nhưng có lẽ nó được chuyển đổi thành thuộc tính phần tử HTML<img>
alt
, được hiển thị trong trường hợp hình ảnh không thể tải và có thể được đọc bởi trình đọc màn hình cho người mù. Vì vậy, đánh dấu này:
![this is my hexacopter I built](https://i.stack.imgur.com/RJj4x.png)
cũng sẽ tạo ra sản phẩm này:
Căn giữa hình ảnh trong markdown yêu cầu chúng tôi sử dụng điều khiển bổ sung mà HTML và CSS có thể cung cấp cho chúng tôi trực tiếp. Bạn có thể chèn và căn giữa một hình ảnh riêng lẻ như thế này:
<img src="https://i.stack.imgur.com/RJj4x.png"
alt="this is my hexacopter I built"
style="display:block;
float:none;
margin-left:auto;
margin-right:auto;
">
Đây là thông tin thêm. về những gì đang xảy ra ở đây:
<img
phần của đoạn mã trên là " thẻ bắt đầu " HTML , trong khi >
ở cuối là thẻ kết thúc "HTML" .img
" HTML này .img
"thẻ" / "phần tử" được sử dụng để chèn hình ảnh vào HTML.style=""
là một CSS property:value
giá trị khóa " khai ".
;
), trong khi mỗi "thuộc tính" HTML trong "phần tử" này được phân tách bằng dấu cách (
).src
vàstyle
.alt
một là không bắt buộc.style
thuộc tính, mà chấp nhận phong cách CSS, tờ khai chính là tất cả 4 mà tôi thấy: display:block
, float:none
, margin-left:auto
, vàmargin-right:auto
.
float
tài sản , thì bạn có thể bỏ khai báo này, nhưng dù sao đi nữa cũng nên có nó./* my comment */
).Điều này khá đơn giản thực sự.
-> This is centered Text <-
Vì vậy, hãy nhớ rằng bạn có thể áp dụng điều này cho cú pháp img.
->![alt text](/link/to/img)<-