mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
Docs content align (#700)
* Docs for content-align, some bug fixes for it too * Make the example output a little clearer * Remove app.run() from content-align docs example * Improve wording * Move content-align and scrollbar-gutter docs exmaples to split css/py files * Remove app.run() from scrollbar-gutter docs example
This commit is contained in:
20
docs/examples/styles/content_align.css
Normal file
20
docs/examples/styles/content_align.css
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#box1 {
|
||||||
|
content-align: left top;
|
||||||
|
background: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
#box2 {
|
||||||
|
content-align: center middle;
|
||||||
|
background: green;
|
||||||
|
}
|
||||||
|
|
||||||
|
#box3 {
|
||||||
|
content-align: right bottom;
|
||||||
|
background: blue;
|
||||||
|
}
|
||||||
|
|
||||||
|
Static {
|
||||||
|
height: 1fr;
|
||||||
|
padding: 1;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
13
docs/examples/styles/content_align.py
Normal file
13
docs/examples/styles/content_align.py
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
from textual.app import App
|
||||||
|
from textual.widgets import Static
|
||||||
|
|
||||||
|
|
||||||
|
class ContentAlignApp(App):
|
||||||
|
def compose(self):
|
||||||
|
yield Static("With [i]content-align[/] you can...", id="box1")
|
||||||
|
yield Static("...[b]Easily align content[/]...", id="box2")
|
||||||
|
yield Static("...Horizontally [i]and[/] vertically!", id="box3")
|
||||||
|
|
||||||
|
|
||||||
|
app = ContentAlignApp(css_path="content_align.css")
|
||||||
|
app.run()
|
||||||
8
docs/examples/styles/scrollbar_gutter.css
Normal file
8
docs/examples/styles/scrollbar_gutter.css
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
Screen {
|
||||||
|
scrollbar-gutter: stable;
|
||||||
|
}
|
||||||
|
|
||||||
|
#text-box {
|
||||||
|
color: floralwhite;
|
||||||
|
background: darkmagenta;
|
||||||
|
}
|
||||||
@@ -11,18 +11,8 @@ Where the fear has gone there will be nothing. Only I will remain."""
|
|||||||
|
|
||||||
|
|
||||||
class ScrollbarGutterApp(App):
|
class ScrollbarGutterApp(App):
|
||||||
CSS = """
|
|
||||||
Screen {
|
|
||||||
scrollbar-gutter: stable;
|
|
||||||
}
|
|
||||||
Static {
|
|
||||||
color: floralwhite;
|
|
||||||
background: darkmagenta;
|
|
||||||
}
|
|
||||||
"""
|
|
||||||
|
|
||||||
def compose(self):
|
def compose(self):
|
||||||
yield Static(TEXT)
|
yield Static(TEXT, id="text-box")
|
||||||
|
|
||||||
|
|
||||||
app = ScrollbarGutterApp()
|
app = ScrollbarGutterApp(css_path="scrollbar_gutter.css")
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
The `border` rule enables the drawing of a box around a widget. A border is set with a border value (see below) followed by a color.
|
The `border` rule enables the drawing of a box around a widget. A border is set with a border value (see below) followed by a color.
|
||||||
|
|
||||||
| Border value | Explanation |
|
| Border value | Explanation |
|
||||||
| ------------ | ------------------------------------------------------- |
|
| ------------ |---------------------------------------------------------|
|
||||||
| `"ascii"` | A border with plus, hyphen, and vertical bar |
|
| `"ascii"` | A border with plus, hyphen, and vertical bar |
|
||||||
| `"blank"` | A blank border (reserves space for a border) |
|
| `"blank"` | A blank border (reserves space for a border) |
|
||||||
| `"dashed"` | Dashed line border |
|
| `"dashed"` | Dashed line border |
|
||||||
|
|||||||
65
docs/styles/content_align.md
Normal file
65
docs/styles/content_align.md
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
# Content-align
|
||||||
|
|
||||||
|
The `content-align` property allows you to align content _inside_ a widget.
|
||||||
|
|
||||||
|
You can specify the alignment of content on both the horizontal and vertical axes.
|
||||||
|
|
||||||
|
## Syntax
|
||||||
|
|
||||||
|
```
|
||||||
|
content-align: <HORIZONTAL> <VERTICAL>;
|
||||||
|
```
|
||||||
|
|
||||||
|
### Values
|
||||||
|
|
||||||
|
#### `HORIZONTAL`
|
||||||
|
|
||||||
|
| Value | Description |
|
||||||
|
|------------------|----------------------------------------------------|
|
||||||
|
| `left` (default) | Align content on the left of the horizontal axis |
|
||||||
|
| `center` | Align content in the center of the horizontal axis |
|
||||||
|
| `right` | Align content on the right of the horizontal axis |
|
||||||
|
|
||||||
|
#### `VERTICAL`
|
||||||
|
|
||||||
|
| Value | Description |
|
||||||
|
|-----------------|--------------------------------------------------|
|
||||||
|
| `top` (default) | Align content at the top of the vertical axis |
|
||||||
|
| `middle` | Align content in the middle of the vertical axis |
|
||||||
|
| `bottom` | Align content at the bottom of the vertical axis |
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
=== "content_align.py"
|
||||||
|
|
||||||
|
```python
|
||||||
|
--8<-- "docs/examples/styles/content_align.py"
|
||||||
|
```
|
||||||
|
|
||||||
|
=== "content_align.css"
|
||||||
|
|
||||||
|
```scss
|
||||||
|
--8<-- "docs/examples/styles/content_align.css"
|
||||||
|
```
|
||||||
|
|
||||||
|
=== "Output"
|
||||||
|
|
||||||
|
```{.textual path="docs/examples/styles/content_align.py"}
|
||||||
|
```
|
||||||
|
|
||||||
|
## CSS
|
||||||
|
|
||||||
|
```sass
|
||||||
|
/* Align content in the very center of a widget */
|
||||||
|
content-align: center middle;
|
||||||
|
/* Align content at the top right of a widget */
|
||||||
|
content-align: right top;
|
||||||
|
```
|
||||||
|
|
||||||
|
## Python
|
||||||
|
```python
|
||||||
|
# Align content in the very center of a widget
|
||||||
|
widget.styles.content_align = ("center", "middle")
|
||||||
|
# Align content at the top right of a widget
|
||||||
|
widget.styles.content_align = ("right", "top")
|
||||||
|
```
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
# Scrollbar gutter
|
# Scrollbar-gutter
|
||||||
|
|
||||||
The `scrollbar-gutter` rule allows authors to reserve space for the vertical scrollbar.
|
The `scrollbar-gutter` rule allows authors to reserve space for the vertical scrollbar.
|
||||||
|
|
||||||
@@ -28,6 +28,12 @@ terminal window.
|
|||||||
--8<-- "docs/examples/styles/scrollbar_gutter.py"
|
--8<-- "docs/examples/styles/scrollbar_gutter.py"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "scrollbar_gutter.css"
|
||||||
|
|
||||||
|
```scss
|
||||||
|
--8<-- "docs/examples/styles/scrollbar_gutter.css"
|
||||||
|
```
|
||||||
|
|
||||||
=== "Output"
|
=== "Output"
|
||||||
|
|
||||||
```{.textual path="docs/examples/styles/scrollbar_gutter.py"}
|
```{.textual path="docs/examples/styles/scrollbar_gutter.py"}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ nav:
|
|||||||
- "styles/border.md"
|
- "styles/border.md"
|
||||||
- "styles/box_sizing.md"
|
- "styles/box_sizing.md"
|
||||||
- "styles/color.md"
|
- "styles/color.md"
|
||||||
|
- "styles/content_align.md"
|
||||||
- "styles/display.md"
|
- "styles/display.md"
|
||||||
- "styles/min_height.md"
|
- "styles/min_height.md"
|
||||||
- "styles/max_height.md"
|
- "styles/max_height.md"
|
||||||
|
|||||||
@@ -188,6 +188,6 @@ def align_lines(
|
|||||||
get_line_length = Segment.get_line_length
|
get_line_length = Segment.get_line_length
|
||||||
for line in lines:
|
for line in lines:
|
||||||
left_space = width - get_line_length(line)
|
left_space = width - get_line_length(line)
|
||||||
yield [*line, Segment(" " * left_space, style)]
|
yield [Segment(" " * left_space, style), *line]
|
||||||
|
|
||||||
yield from blank_lines(bottom_blank_lines)
|
yield from blank_lines(bottom_blank_lines)
|
||||||
|
|||||||
@@ -762,7 +762,7 @@ class Styles(StylesBase):
|
|||||||
)
|
)
|
||||||
elif has_rule("align_horizontal"):
|
elif has_rule("align_horizontal"):
|
||||||
append_declaration("align-horizontal", self.align_horizontal)
|
append_declaration("align-horizontal", self.align_horizontal)
|
||||||
elif has_rule("align_horizontal"):
|
elif has_rule("align_vertical"):
|
||||||
append_declaration("align-vertical", self.align_vertical)
|
append_declaration("align-vertical", self.align_vertical)
|
||||||
|
|
||||||
if has_rule("content_align_horizontal") and has_rule("content_align_vertical"):
|
if has_rule("content_align_horizontal") and has_rule("content_align_vertical"):
|
||||||
@@ -774,7 +774,7 @@ class Styles(StylesBase):
|
|||||||
append_declaration(
|
append_declaration(
|
||||||
"content-align-horizontal", self.content_align_horizontal
|
"content-align-horizontal", self.content_align_horizontal
|
||||||
)
|
)
|
||||||
elif has_rule("content_align_horizontal"):
|
elif has_rule("content_align_vertical"):
|
||||||
append_declaration("content-align-vertical", self.content_align_vertical)
|
append_declaration("content-align-vertical", self.content_align_vertical)
|
||||||
|
|
||||||
lines.sort()
|
lines.sort()
|
||||||
|
|||||||
Reference in New Issue
Block a user