mirror of https://github.com/sveltejs/svelte
				
				
				
			Add documentation and tutorial for svelte:fragment (#6097)
	
		
	
				
					
				
			
							parent
							
								
									ddfe920ede
								
							
						
					
					
						commit
						47e1eeed56
					
				@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					<script>
 | 
				
			||||||
 | 
						import Box from './Box.svelte'
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<Box>
 | 
				
			||||||
 | 
						<div slot="footer">
 | 
				
			||||||
 | 
							<p>All rights reserved.</p>
 | 
				
			||||||
 | 
							<p>Copyright (c) 2019 Svelte Industries</p>
 | 
				
			||||||
 | 
						</div>
 | 
				
			||||||
 | 
					</Box>
 | 
				
			||||||
@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					<style>
 | 
				
			||||||
 | 
						.box {
 | 
				
			||||||
 | 
							width: 300px;
 | 
				
			||||||
 | 
							border: 1px solid #aaa;
 | 
				
			||||||
 | 
							border-radius: 2px;
 | 
				
			||||||
 | 
							box-shadow: 2px 2px 8px rgba(0,0,0,0.1);
 | 
				
			||||||
 | 
							padding: 1em;
 | 
				
			||||||
 | 
							margin: 0 0 1em 0;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							display: flex;
 | 
				
			||||||
 | 
							flex-direction: column;
 | 
				
			||||||
 | 
							gap: 1em;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div class="box">
 | 
				
			||||||
 | 
						<slot name="header">No header was provided</slot>
 | 
				
			||||||
 | 
						<p>Some content between header and footer</p>
 | 
				
			||||||
 | 
						<slot name="footer"></slot>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					<script>
 | 
				
			||||||
 | 
						import Box from './Box.svelte'
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<Box>
 | 
				
			||||||
 | 
						<svelte:fragment slot="footer">
 | 
				
			||||||
 | 
							<p>All rights reserved.</p>
 | 
				
			||||||
 | 
							<p>Copyright (c) 2019 Svelte Industries</p>
 | 
				
			||||||
 | 
						</svelte:fragment>
 | 
				
			||||||
 | 
					</Box>
 | 
				
			||||||
@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					<style>
 | 
				
			||||||
 | 
						.box {
 | 
				
			||||||
 | 
							width: 300px;
 | 
				
			||||||
 | 
							border: 1px solid #aaa;
 | 
				
			||||||
 | 
							border-radius: 2px;
 | 
				
			||||||
 | 
							box-shadow: 2px 2px 8px rgba(0,0,0,0.1);
 | 
				
			||||||
 | 
							padding: 1em;
 | 
				
			||||||
 | 
							margin: 0 0 1em 0;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							display: flex;
 | 
				
			||||||
 | 
							flex-direction: column;
 | 
				
			||||||
 | 
							gap: 1em;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div class="box">
 | 
				
			||||||
 | 
						<slot name="header">No header was provided</slot>
 | 
				
			||||||
 | 
						<p>Some content between header and footer</p>
 | 
				
			||||||
 | 
						<slot name="footer"></slot>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
@ -0,0 +1,35 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					title: <svelte:fragment>
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The `<svelte:fragment>` element allows you to place content in a named slot without wrapping it in a container DOM element. This keeps the flow layout of your document intact.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In the example notice how we applied a flex layout with a gap of `1em` to the box.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```sv
 | 
				
			||||||
 | 
					<!-- Box.svelte -->
 | 
				
			||||||
 | 
					<style>
 | 
				
			||||||
 | 
						.box {		
 | 
				
			||||||
 | 
							display: flex;
 | 
				
			||||||
 | 
							flex-direction: column;
 | 
				
			||||||
 | 
							gap: 1em;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div class="box">
 | 
				
			||||||
 | 
						<slot name="header">No header was provided</slot>
 | 
				
			||||||
 | 
						<p>Some content between header and footer</p>
 | 
				
			||||||
 | 
						<slot name="footer"></slot>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					However, the content in the footer is not spaced out according to this rhythm because wrapping it in a div created a new flow layout.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					We can solve this by changing `<div slot="footer">` in the `App` component. Replace the `<div>` with `<svelte:fragment>`:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```sv
 | 
				
			||||||
 | 
					<svelte:fragment slot="footer">
 | 
				
			||||||
 | 
						<p>All rights reserved.</p>
 | 
				
			||||||
 | 
						<p>Copyright (c) 2019 Svelte Industries</p>
 | 
				
			||||||
 | 
					</svelte:fragment>
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue